lkml.org 
[lkml]   [2019]   [May]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 200/276] rtlwifi: fix potential NULL pointer dereference
    Date
    [ Upstream commit 60209d482b97743915883d293c8b85226d230c19 ]

    In case dev_alloc_skb fails, the fix safely returns to avoid
    potential NULL pointer dereference.

    Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8192c/fw_common.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8192ee/fw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8723ae/fw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.c | 4 ++++
    6 files changed, 14 insertions(+)

    diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c
    index 63874512598bb..b5f91c994c798 100644
    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c
    @@ -622,6 +622,8 @@ void rtl88e_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished)
    u1rsvdpageloc, 3);

    skb = dev_alloc_skb(totalpacketlen);
    + if (!skb)
    + return;
    skb_put_data(skb, &reserved_page_packet, totalpacketlen);

    rtstatus = rtl_cmd_send_packet(hw, skb);
    diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192c/fw_common.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192c/fw_common.c
    index f3bff66e85d0c..81ec0e6e07c1f 100644
    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192c/fw_common.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192c/fw_common.c
    @@ -646,6 +646,8 @@ void rtl92c_set_fw_rsvdpagepkt(struct ieee80211_hw *hw,


    skb = dev_alloc_skb(totalpacketlen);
    + if (!skb)
    + return;
    skb_put_data(skb, &reserved_page_packet, totalpacketlen);

    if (cmd_send_packet)
    diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/fw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/fw.c
    index 84a0d0eb72e1e..a933490928ba9 100644
    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/fw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/fw.c
    @@ -766,6 +766,8 @@ void rtl92ee_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished)
    u1rsvdpageloc, 3);

    skb = dev_alloc_skb(totalpacketlen);
    + if (!skb)
    + return;
    skb_put_data(skb, &reserved_page_packet, totalpacketlen);

    rtstatus = rtl_cmd_send_packet(hw, skb);
    diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/fw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/fw.c
    index bf9859f74b6f5..52f108744e969 100644
    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/fw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/fw.c
    @@ -470,6 +470,8 @@ void rtl8723e_set_fw_rsvdpagepkt(struct ieee80211_hw *hw, bool b_dl_finished)
    u1rsvdpageloc, 3);

    skb = dev_alloc_skb(totalpacketlen);
    + if (!skb)
    + return;
    skb_put_data(skb, &reserved_page_packet, totalpacketlen);

    rtstatus = rtl_cmd_send_packet(hw, skb);
    diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c
    index f2441fbb92f1e..307c2bd77f060 100644
    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c
    @@ -584,6 +584,8 @@ void rtl8723be_set_fw_rsvdpagepkt(struct ieee80211_hw *hw,
    u1rsvdpageloc, sizeof(u1rsvdpageloc));

    skb = dev_alloc_skb(totalpacketlen);
    + if (!skb)
    + return;
    skb_put_data(skb, &reserved_page_packet, totalpacketlen);

    rtstatus = rtl_cmd_send_packet(hw, skb);
    diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.c
    index d868a034659fb..d7235f6165fdf 100644
    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.c
    @@ -1645,6 +1645,8 @@ void rtl8812ae_set_fw_rsvdpagepkt(struct ieee80211_hw *hw,
    &reserved_page_packet_8812[0], totalpacketlen);

    skb = dev_alloc_skb(totalpacketlen);
    + if (!skb)
    + return;
    skb_put_data(skb, &reserved_page_packet_8812, totalpacketlen);

    rtstatus = rtl_cmd_send_packet(hw, skb);
    @@ -1781,6 +1783,8 @@ void rtl8821ae_set_fw_rsvdpagepkt(struct ieee80211_hw *hw,
    &reserved_page_packet_8821[0], totalpacketlen);

    skb = dev_alloc_skb(totalpacketlen);
    + if (!skb)
    + return;
    skb_put_data(skb, &reserved_page_packet_8821, totalpacketlen);

    rtstatus = rtl_cmd_send_packet(hw, skb);
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-05-30 05:25    [W:7.130 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site