Procházet zdrojové kódy

qcacld-3.0: debug check for l_rx_defrag_waitlist_remove

qcacld-2.0 to qcacld-3.0 propagation

while wlan disconnection is happening, in the process of peer-cleanup
check for tqu->prev to be non-null before calling TAILQ_REMOVE.

Change-Id: I5841dfe80b954bdfac5147f5e3e3661cc85ba4b1
CRs-Fixed: 836447
DARAM SUDHA před 10 roky
rodič
revize
f66ffc8d78
1 změnil soubory, kde provedl 6 přidání a 2 odebrání
  1. 6 2
      core/dp/txrx/ol_rx_defrag.c

+ 6 - 2
core/dp/txrx/ol_rx_defrag.c

@@ -393,14 +393,18 @@ void ol_rx_defrag_waitlist_remove(struct ol_txrx_peer_t *peer, unsigned tid)
 	struct ol_txrx_pdev_t *pdev = peer->vdev->pdev;
 	struct ol_rx_reorder_t *rx_reorder = &peer->tids_rx_reorder[tid];
 
-	if (rx_reorder->defrag_waitlist_elem.tqe_next != NULL ||
-	    rx_reorder->defrag_waitlist_elem.tqe_prev != NULL) {
+	if (rx_reorder->defrag_waitlist_elem.tqe_next != NULL) {
 
 		TAILQ_REMOVE(&pdev->rx.defrag.waitlist, rx_reorder,
 			     defrag_waitlist_elem);
 
 		rx_reorder->defrag_waitlist_elem.tqe_next = NULL;
 		rx_reorder->defrag_waitlist_elem.tqe_prev = NULL;
+	} else {
+		TXRX_PRINT(TXRX_PRINT_LEVEL_FATAL_ERR,
+				"waitlist->tqe_prv = NULL\n");
+		CDF_ASSERT(0);
+		rx_reorder->defrag_waitlist_elem.tqe_next = NULL;
 	}
 }