rtw88: assign NULL to skb after being kfree()'ed
authorYan-Hsuan Chuang <yhchuang@realtek.com>
Fri, 20 Dec 2019 09:21:55 +0000 (17:21 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Sun, 26 Jan 2020 15:38:13 +0000 (17:38 +0200)
Should assign NULL to skb after kfree(), in case of driver
trying to free the same skb again.

This could happen if driver failed to allocate an skb when
building reserved page.

Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtw88/fw.c

index e3e91ae0d3d23e871b1a23555e726142fbb25e0c..243441453eade4db348110597fe00bf66159eba7 100644 (file)
@@ -1139,13 +1139,16 @@ static u8 *rtw_build_rsvd_page(struct rtw_dev *rtwdev,
                        page += rtw_len_to_page(rsvd_pkt->skb->len, page_size);
 
                kfree_skb(rsvd_pkt->skb);
+               rsvd_pkt->skb = NULL;
        }
 
        return buf;
 
 release_skb:
-       list_for_each_entry(rsvd_pkt, &rtwdev->rsvd_page_list, list)
+       list_for_each_entry(rsvd_pkt, &rtwdev->rsvd_page_list, list) {
                kfree_skb(rsvd_pkt->skb);
+               rsvd_pkt->skb = NULL;
+       }
 
        return NULL;
 }