linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] rtlwifi: fix potential NULL pointer dereference
@ 2019-03-12  9:06 pkshih
  2019-03-12 15:20 ` Kangjie Lu
  2019-04-04 10:25 ` Kalle Valo
  0 siblings, 2 replies; 3+ messages in thread
From: pkshih @ 2019-03-12  9:06 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, Larry.Finger, kjlu

From: Ping-Ke Shih <pkshih@realtek.com>

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>
---
 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 203e7b574e84..e2e0bfbc24fe 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c
@@ -600,6 +600,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 18c76990a089..86b1b88cc4ed 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192c/fw_common.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192c/fw_common.c
@@ -623,6 +623,8 @@ void rtl92c_set_fw_rsvdpagepkt(struct ieee80211_hw *hw,
 		      u1rsvdpageloc, 3);
 
 	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 7c5b54b71a92..67305ce915ec 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/fw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/fw.c
@@ -744,6 +744,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 be451a6f7dbe..33481232fad0 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/fw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/fw.c
@@ -448,6 +448,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 4d7fa27f55ca..aa56058af56e 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c
@@ -562,6 +562,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 dc0eb692088f..fe32d397d287 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.c
@@ -1623,6 +1623,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);
@@ -1759,6 +1761,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.19.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] rtlwifi: fix potential NULL pointer dereference
  2019-03-12  9:06 [PATCH] rtlwifi: fix potential NULL pointer dereference pkshih
@ 2019-03-12 15:20 ` Kangjie Lu
  2019-04-04 10:25 ` Kalle Valo
  1 sibling, 0 replies; 3+ messages in thread
From: Kangjie Lu @ 2019-03-12 15:20 UTC (permalink / raw)
  To: pkshih, kvalo; +Cc: linux-wireless, Larry.Finger

Thanks for reporting the cases. There are still a few more such
cases; we will report them soon.

On 3/12/19 4:06 AM, pkshih@realtek.com wrote:
> From: Ping-Ke Shih <pkshih@realtek.com>
>
> 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>
> ---
>   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 203e7b574e84..e2e0bfbc24fe 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/fw.c
> @@ -600,6 +600,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 18c76990a089..86b1b88cc4ed 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192c/fw_common.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192c/fw_common.c
> @@ -623,6 +623,8 @@ void rtl92c_set_fw_rsvdpagepkt(struct ieee80211_hw *hw,
>   		      u1rsvdpageloc, 3);
>   
>   	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 7c5b54b71a92..67305ce915ec 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/fw.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/fw.c
> @@ -744,6 +744,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 be451a6f7dbe..33481232fad0 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/fw.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/fw.c
> @@ -448,6 +448,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 4d7fa27f55ca..aa56058af56e 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/fw.c
> @@ -562,6 +562,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 dc0eb692088f..fe32d397d287 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/fw.c
> @@ -1623,6 +1623,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);
> @@ -1759,6 +1761,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);

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] rtlwifi: fix potential NULL pointer dereference
  2019-03-12  9:06 [PATCH] rtlwifi: fix potential NULL pointer dereference pkshih
  2019-03-12 15:20 ` Kangjie Lu
@ 2019-04-04 10:25 ` Kalle Valo
  1 sibling, 0 replies; 3+ messages in thread
From: Kalle Valo @ 2019-04-04 10:25 UTC (permalink / raw)
  To: pkshih; +Cc: linux-wireless, Larry.Finger, kjlu

<pkshih@realtek.com> wrote:

> From: Ping-Ke Shih <pkshih@realtek.com>
> 
> 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>

Patch applied to wireless-drivers-next.git, thanks.

60209d482b97 rtlwifi: fix potential NULL pointer dereference

-- 
https://patchwork.kernel.org/patch/10848803/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-04-04 10:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-12  9:06 [PATCH] rtlwifi: fix potential NULL pointer dereference pkshih
2019-03-12 15:20 ` Kangjie Lu
2019-04-04 10:25 ` Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).