diff mbox series

[PATCHv2] mac80211: fix NULL ptr dereference during mesh peer connection for non HE devices

Message ID 1618483625-31097-1-git-send-email-akalaise@codeaurora.org (mailing list archive)
State Changes Requested
Delegated to: Johannes Berg
Headers show
Series [PATCHv2] mac80211: fix NULL ptr dereference during mesh peer connection for non HE devices | expand

Commit Message

Abinaya Kalaiselvan April 15, 2021, 10:47 a.m. UTC
"sband->iftype_data" is not assigned with any value for non HE supported
devices, which causes NULL pointer access during mesh peer connection
in those devices. Fix this by accessing the pointer after HE
capabilities condition check.

Fixes: 7f7aa94bcaf0 (mac80211: reduce peer HE MCS/NSS to own capabilities)
Signed-off-by: Abinaya Kalaiselvan <akalaise@codeaurora.org>
---
v2:
* ieee80211_sta_he_cap structure instance is initialized.

 net/mac80211/he.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Johannes Berg April 19, 2021, 11:23 a.m. UTC | #1
On Thu, 2021-04-15 at 16:17 +0530, Abinaya Kalaiselvan wrote:
> "sband->iftype_data" is not assigned with any value for non HE supported
> devices, which causes NULL pointer access during mesh peer connection
> in those devices. Fix this by accessing the pointer after HE
> capabilities condition check.
> 
> Fixes: 7f7aa94bcaf0 (mac80211: reduce peer HE MCS/NSS to own capabilities)
> Signed-off-by: Abinaya Kalaiselvan <akalaise@codeaurora.org>
> ---
> v2:
> * ieee80211_sta_he_cap structure instance is initialized.
> 
How about taking other feedback into account?

johannes
Nicolas Cavallari June 15, 2021, 2:17 p.m. UTC | #2
On 19/04/2021 13:23, Johannes Berg wrote:
> On Thu, 2021-04-15 at 16:17 +0530, Abinaya Kalaiselvan wrote:
>> "sband->iftype_data" is not assigned with any value for non HE supported
>> devices, which causes NULL pointer access during mesh peer connection
>> in those devices. Fix this by accessing the pointer after HE
>> capabilities condition check.
>>
>> Fixes: 7f7aa94bcaf0 (mac80211: reduce peer HE MCS/NSS to own capabilities)
>> Signed-off-by: Abinaya Kalaiselvan <akalaise@codeaurora.org>
>> ---
>> v2:
>> * ieee80211_sta_he_cap structure instance is initialized.
>>
> How about taking other feedback into account?
> 
> johannes
> 

I got a crash because of this bug and this patch fixes it. Abinaya, do you plan 
to submit a version with the indentation fixed, or can I do it ?
Abinaya Kalaiselvan June 23, 2021, 2:42 p.m. UTC | #3
On 2021-06-15 19:47, Nicolas Cavallari wrote:
> On 19/04/2021 13:23, Johannes Berg wrote:
>> On Thu, 2021-04-15 at 16:17 +0530, Abinaya Kalaiselvan wrote:
>>> "sband->iftype_data" is not assigned with any value for non HE 
>>> supported
>>> devices, which causes NULL pointer access during mesh peer connection
>>> in those devices. Fix this by accessing the pointer after HE
>>> capabilities condition check.
>>> 
>>> Fixes: 7f7aa94bcaf0 (mac80211: reduce peer HE MCS/NSS to own 
>>> capabilities)
>>> Signed-off-by: Abinaya Kalaiselvan <akalaise@codeaurora.org>
>>> ---
>>> v2:
>>> * ieee80211_sta_he_cap structure instance is initialized.
>>> 
>> How about taking other feedback into account?
>> 
>> johannes
>> 
> 
> I got a crash because of this bug and this patch fixes it. Abinaya, do
> you plan to submit a version with the indentation fixed, or can I do
> it ?

Thanks Nicolas. I have sent the updated patch with indentation fix.

Thanks,
Abinaya Kalaiselvan
diff mbox series

Patch

diff --git a/net/mac80211/he.c b/net/mac80211/he.c
index 0c0b970..96a47b0 100644
--- a/net/mac80211/he.c
+++ b/net/mac80211/he.c
@@ -111,7 +111,7 @@  ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata,
 				  struct sta_info *sta)
 {
 	struct ieee80211_sta_he_cap *he_cap = &sta->sta.he_cap;
-	struct ieee80211_sta_he_cap own_he_cap = sband->iftype_data->he_cap;
+	struct ieee80211_sta_he_cap own_he_cap = {0};
 	struct ieee80211_he_cap_elem *he_cap_ie_elem = (void *)he_cap_ie;
 	u8 he_ppe_size;
 	u8 mcs_nss_size;
@@ -123,6 +123,8 @@  ieee80211_he_cap_ie_to_sta_he_cap(struct ieee80211_sub_if_data *sdata,
 	if (!he_cap_ie || !ieee80211_get_he_sta_cap(sband))
 		return;
 
+	 own_he_cap = sband->iftype_data->he_cap;
+
 	/* Make sure size is OK */
 	mcs_nss_size = ieee80211_he_mcs_nss_size(he_cap_ie_elem);
 	he_ppe_size =