OSDN Git Service

wifi: ath11k: fix undefined behavior with __fls in dp
authorHarshitha Prem <quic_hprem@quicinc.com>
Mon, 3 Apr 2023 18:41:55 +0000 (00:11 +0530)
committerKalle Valo <quic_kvalo@quicinc.com>
Mon, 17 Apr 2023 10:28:31 +0000 (13:28 +0300)
"__fls" would have an undefined behavior if the argument is passed
as "0". Hence, added changes to handle the same.

Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1

Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com>
Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230403184155.8670-3-quic_nmaran@quicinc.com
drivers/net/wireless/ath/ath11k/dp_rx.c

index ab6b18d..847da16 100644 (file)
@@ -3598,7 +3598,7 @@ static int ath11k_dp_rx_frag_h_mpdu(struct ath11k *ar,
                goto out_unlock;
        }
 
-       if (frag_no > __fls(rx_tid->rx_frag_bitmap))
+       if (!rx_tid->rx_frag_bitmap || (frag_no > __fls(rx_tid->rx_frag_bitmap)))
                __skb_queue_tail(&rx_tid->rx_frags, msdu);
        else
                ath11k_dp_rx_h_sort_frags(ar, &rx_tid->rx_frags, msdu);