From 5fc91d835ea8762b34eee0fd978ad9f05129bdce Mon Sep 17 00:00:00 2001 From: chenguo Date: Wed, 28 Nov 2018 14:31:13 +0800 Subject: [PATCH] qcacmn: Safely cleanup reorder frag list during RX defrag flush Need to use tid_lock to protect the rx_tid data structure in the dp_rx_reorder_flush_frag function. Or else there will be race condition issues. CRs-Fixed: 2357226 Change-Id: I860a64b529f0548eced7b537c4180a2c57175a56 --- dp/wifi3.0/dp_rx_defrag.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dp/wifi3.0/dp_rx_defrag.c b/dp/wifi3.0/dp_rx_defrag.c index 3b8bef44e1a0..29aa2c636f28 100644 --- a/dp/wifi3.0/dp_rx_defrag.c +++ b/dp/wifi3.0/dp_rx_defrag.c @@ -197,7 +197,10 @@ void dp_rx_defrag_waitlist_flush(struct dp_soc *soc) peer = container_of(rx_reorder, struct dp_peer, rx_tid[rx_reorder->tid]); + + qdf_spin_lock_bh(&rx_reorder->tid_lock); dp_rx_reorder_flush_frag(peer, rx_reorder->tid); + qdf_spin_unlock_bh(&rx_reorder->tid_lock); } }