[bug report] wifi: ath12k: move struct ath12k_hw from per device to group

Karthikeyan Periyasamy quic_periyasa at quicinc.com
Tue Dec 10 01:30:48 PST 2024



On 12/10/2024 2:04 PM, Dan Carpenter wrote:
> Hello Karthikeyan Periyasamy,
> 
> Commit a343d97f27f5 ("wifi: ath12k: move struct ath12k_hw from per
> device to group") from Dec 4, 2024 (linux-next), leads to the
> following Smatch static checker warning:
> 
> 	drivers/net/wireless/ath/ath12k/mac.c:10938 ath12k_mac_destroy()
> 	error: we previously assumed 'ab' could be null (see line 10927)
> 
> drivers/net/wireless/ath/ath12k/mac.c
>      10918 void ath12k_mac_destroy(struct ath12k_hw_group *ag)
>      10919 {
>      10920         struct ath12k_pdev *pdev;
>      10921         struct ath12k_base *ab = ag->ab[0];
>      10922         int i, j;
>      10923         struct ath12k_hw *ah;
>      10924
>      10925         for (i = 0; i < ag->num_devices; i++) {
>      10926                 ab = ag->ab[i];
>      10927                 if (!ab)
>                                ^^^
> The patch addes this check for NULL.  What about if it's the last element
> which is NULL?

In some error case, it is possible to NULL.

> 
>      10928                         continue;
>      10929
>      10930                 for (j = 0; j < ab->num_radios; j++) {
>      10931                         pdev = &ab->pdevs[j];
>      10932                         if (!pdev->ar)
>      10933                                 continue;
>      10934                         pdev->ar = NULL;
>      10935                 }
>      10936         }
>      10937
> --> 10938         for (i = 0; i < ath12k_get_num_hw(ab); i++) {
>                                                      ^^
> If so, then it leads to a crash here.

Yes, will raise a patch.

> 
>      10939                 ah = ath12k_ab_to_ah(ab, i);
>      10940                 if (!ah)
>      10941                         continue;
>      10942
>      10943                 ath12k_mac_hw_destroy(ah);
>      10944                 ath12k_ab_set_ah(ab, i, NULL);
>      10945         }
>      10946 }
> 
> regards,
> dan carpenter

-- 
Karthikeyan Periyasamy
--
கார்த்திகேயன் பெரியசாமி



More information about the ath12k mailing list