Merge 86100918ae on remote branch

Change-Id: I81ea7be9139d6652ab4988e5da9aa2aa15e02070
This commit is contained in:
Linux Build Service Account 2021-08-27 00:05:14 -07:00
commit db37144643
2 changed files with 7 additions and 10 deletions

View File

@ -1609,6 +1609,7 @@ int ipa3_release_gsi_channel(u32 clnt_hdl)
struct ipa3_ep_context *ep;
int result = -EFAULT;
enum gsi_status gsi_res;
unsigned long flags;
IPADBG("entry\n");
if (clnt_hdl >= ipa3_ctx->ipa_num_pipes ||
@ -1623,10 +1624,9 @@ int ipa3_release_gsi_channel(u32 clnt_hdl)
IPA_ACTIVE_CLIENTS_INC_EP(ipa3_get_client_mapping(clnt_hdl));
/* Set the disconnect in progress flag to avoid calling cb.*/
spin_lock(&ipa3_ctx->disconnect_lock);
spin_lock_irqsave(&ipa3_ctx->disconnect_lock, flags);
atomic_set(&ep->disconnect_in_progress, 1);
spin_unlock(&ipa3_ctx->disconnect_lock);
spin_unlock_irqrestore(&ipa3_ctx->disconnect_lock, flags);
gsi_res = gsi_dealloc_channel(ep->gsi_chan_hdl);
if (gsi_res != GSI_STATUS_SUCCESS) {
@ -1646,9 +1646,9 @@ int ipa3_release_gsi_channel(u32 clnt_hdl)
if (!ep->keep_ipa_awake)
IPA_ACTIVE_CLIENTS_DEC_EP(ipa3_get_client_mapping(clnt_hdl));
spin_lock(&ipa3_ctx->disconnect_lock);
spin_lock_irqsave(&ipa3_ctx->disconnect_lock, flags);
memset(&ipa3_ctx->ep[clnt_hdl], 0, sizeof(struct ipa3_ep_context));
spin_unlock(&ipa3_ctx->disconnect_lock);
spin_unlock_irqrestore(&ipa3_ctx->disconnect_lock, flags);
IPADBG("exit\n");
return 0;

View File

@ -7120,16 +7120,13 @@ int ipa3_alloc_counter_id(struct ipa_ioc_flt_rt_counter_alloc *header)
{
int i, unused_cnt, unused_max, unused_start_id;
struct ipa_ioc_flt_rt_counter_alloc *counter;
idr_preload(GFP_KERNEL);
spin_lock(&ipa3_ctx->flt_rt_counters.hdl_lock);
counter = kmem_cache_zalloc(ipa3_ctx->fnr_stats_cache, GFP_KERNEL);
if (!counter) {
IPAERR_RL("failed to alloc fnr stats counter object\n");
spin_unlock(&ipa3_ctx->flt_rt_counters.hdl_lock);
return -ENOMEM;
}
idr_preload(GFP_KERNEL);
spin_lock(&ipa3_ctx->flt_rt_counters.hdl_lock);
memcpy(counter, header, sizeof(struct ipa_ioc_flt_rt_counter_alloc));
/* allocate hw counters */
counter->hw_counter.start_id = 0;