Browse Source

qcacmn: Disable bh while holding completion_freeq_lock in process context

Avoid deadlocking by disabling bh while holding completion_freeq_lock
operating in process context.

Change-Id: I16b105f68e07939d340ccccfd96f81a37959d5bc
CRs-Fixed: 2308549
Pavankumar Nandeshwar 6 years ago
parent
commit
5bdd94bf14
2 changed files with 4 additions and 4 deletions
  1. 2 2
      hif/src/ce/ce_main.c
  2. 2 2
      hif/src/ce/ce_service.c

+ 2 - 2
hif/src/ce/ce_main.c

@@ -1953,9 +1953,9 @@ hif_pci_ce_send_done(struct CE_handle *copyeng, void *ce_context,
 					toeplitz_hash_result);
 		}
 
-		qdf_spin_lock(&pipe_info->completion_freeq_lock);
+		qdf_spin_lock_bh(&pipe_info->completion_freeq_lock);
 		pipe_info->num_sends_allowed++;
-		qdf_spin_unlock(&pipe_info->completion_freeq_lock);
+		qdf_spin_unlock_bh(&pipe_info->completion_freeq_lock);
 	} while (ce_completed_send_next(copyeng,
 			&ce_context, &transfer_context,
 			&CE_data, &nbytes, &transfer_id,

+ 2 - 2
hif/src/ce/ce_service.c

@@ -2139,10 +2139,10 @@ more_completions:
 				struct HIF_CE_pipe_info *pipe_info =
 					(struct HIF_CE_pipe_info *)CE_context;
 
-				qdf_spin_lock(&pipe_info->
+				qdf_spin_lock_bh(&pipe_info->
 					      completion_freeq_lock);
 				pipe_info->num_sends_allowed++;
-				qdf_spin_unlock(&pipe_info->
+				qdf_spin_unlock_bh(&pipe_info->
 						completion_freeq_lock);
 			}
 		}