[PATCH] iwlegacy: 3945-rs: fix possible null-pointer dereferences in il3945_rs_get_rate()

Tuo Li posted 1 patch 1 month ago
drivers/net/wireless/intel/iwlegacy/3945-rs.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
[PATCH] iwlegacy: 3945-rs: fix possible null-pointer dereferences in il3945_rs_get_rate()
Posted by Tuo Li 1 month ago
In this function, il_sta is assigned to rs_sta, and rs_sta is dereferenced
at several points. If il_sta is NULL, this can lead to null-pointer
dereferences. To fix this issue, add an early check for il_sta and return
if it is NULL, consistent with the handling in il3945_rs_tx_status().

Signed-off-by: Tuo Li <islituo@gmail.com>
---
 drivers/net/wireless/intel/iwlegacy/3945-rs.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlegacy/3945-rs.c b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
index 1826c37c090c..c13268093a6e 100644
--- a/drivers/net/wireless/intel/iwlegacy/3945-rs.c
+++ b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
@@ -626,8 +626,13 @@ il3945_rs_get_rate(void *il_r, struct ieee80211_sta *sta, void *il_sta,
 
 	D_RATE("enter\n");
 
+	if (!il_sta) {
+		D_RATE("leave: No STA il data available!\n");
+		return;
+	}
+
 	/* Treat uninitialized rate scaling data same as non-existing. */
-	if (rs_sta && !rs_sta->il) {
+	if (!rs_sta->il) {
 		D_RATE("Rate scaling information not initialized yet.\n");
 		il_sta = NULL;
 	}
-- 
2.43.0
Re: [PATCH] iwlegacy: 3945-rs: fix possible null-pointer dereferences in il3945_rs_get_rate()
Posted by Stanislaw Gruszka 1 month ago
On Wed, Jan 07, 2026 at 03:10:01PM +0800, Tuo Li wrote:
> In this function, il_sta is assigned to rs_sta, and rs_sta is dereferenced
> at several points. If il_sta is NULL, this can lead to null-pointer
> dereferences. To fix this issue, add an early check for il_sta and return
> if it is NULL, consistent with the handling in il3945_rs_tx_status().
> 
> Signed-off-by: Tuo Li <islituo@gmail.com>
> ---
>  drivers/net/wireless/intel/iwlegacy/3945-rs.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/intel/iwlegacy/3945-rs.c b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
> index 1826c37c090c..c13268093a6e 100644
> --- a/drivers/net/wireless/intel/iwlegacy/3945-rs.c
> +++ b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
> @@ -626,8 +626,13 @@ il3945_rs_get_rate(void *il_r, struct ieee80211_sta *sta, void *il_sta,
>  
>  	D_RATE("enter\n");
>  
> +	if (!il_sta) {
> +		D_RATE("leave: No STA il data available!\n");
> +		return;
> +	}
> +
>  	/* Treat uninitialized rate scaling data same as non-existing. */
> -	if (rs_sta && !rs_sta->il) {
> +	if (!rs_sta->il) {
>  		D_RATE("Rate scaling information not initialized yet.\n");
>  		il_sta = NULL;
Please also change to return here instead of setting il_sta to NULL.
And make D_RATE messages similar to il3945_rs_tx_status() i.e. :

          if (!il_sta) {
                  D_RATE("leave: No STA il data to update!\n");
                  return;
          }

          /* Treat uninitialized rate scaling data same as non-existing. */
          if (!rs_sta->il) {
                  D_RATE("leave: STA il data uninitialized!\n");
                  return;
          }

Thanks
Stanislaw
Re: [PATCH] iwlegacy: 3945-rs: fix possible null-pointer dereferences in il3945_rs_get_rate()
Posted by Stanislaw Gruszka 1 month ago
On Wed, Jan 07, 2026 at 08:44:40AM +0100, Stanislaw Gruszka wrote:
> On Wed, Jan 07, 2026 at 03:10:01PM +0800, Tuo Li wrote:
> > In this function, il_sta is assigned to rs_sta, and rs_sta is dereferenced
> > at several points. If il_sta is NULL, this can lead to null-pointer
> > dereferences. To fix this issue, add an early check for il_sta and return
> > if it is NULL, consistent with the handling in il3945_rs_tx_status().
> > 
> > Signed-off-by: Tuo Li <islituo@gmail.com>
> > ---
> >  drivers/net/wireless/intel/iwlegacy/3945-rs.c | 7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/net/wireless/intel/iwlegacy/3945-rs.c b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
> > index 1826c37c090c..c13268093a6e 100644
> > --- a/drivers/net/wireless/intel/iwlegacy/3945-rs.c
> > +++ b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
> > @@ -626,8 +626,13 @@ il3945_rs_get_rate(void *il_r, struct ieee80211_sta *sta, void *il_sta,
> >  
> >  	D_RATE("enter\n");
> >  
> > +	if (!il_sta) {
> > +		D_RATE("leave: No STA il data available!\n");
> > +		return;
> > +	}
> > +
> >  	/* Treat uninitialized rate scaling data same as non-existing. */
> > -	if (rs_sta && !rs_sta->il) {
> > +	if (!rs_sta->il) {
> >  		D_RATE("Rate scaling information not initialized yet.\n");
> >  		il_sta = NULL;
> Please also change to return here instead of setting il_sta to NULL.
> And make D_RATE messages similar to il3945_rs_tx_status() i.e. :
> 
>           if (!il_sta) {
>                   D_RATE("leave: No STA il data to update!\n");
>                   return;
>           }
> 
>           /* Treat uninitialized rate scaling data same as non-existing. */
>           if (!rs_sta->il) {
>                   D_RATE("leave: STA il data uninitialized!\n");
>                   return;
>           }

Please also add 'wifi:' prefix to the patch title.
 
Thanks
Stanislaw
Re: [PATCH] iwlegacy: 3945-rs: fix possible null-pointer dereferences in il3945_rs_get_rate()
Posted by Tuo Li 1 month ago
On Wed, Jan 7, 2026 at 4:06 PM Stanislaw Gruszka <stf_xl@wp.pl> wrote:
>
> On Wed, Jan 07, 2026 at 08:44:40AM +0100, Stanislaw Gruszka wrote:
> > On Wed, Jan 07, 2026 at 03:10:01PM +0800, Tuo Li wrote:
> > > In this function, il_sta is assigned to rs_sta, and rs_sta is dereferenced
> > > at several points. If il_sta is NULL, this can lead to null-pointer
> > > dereferences. To fix this issue, add an early check for il_sta and return
> > > if it is NULL, consistent with the handling in il3945_rs_tx_status().
> > >
> > > Signed-off-by: Tuo Li <islituo@gmail.com>
> > > ---
> > >  drivers/net/wireless/intel/iwlegacy/3945-rs.c | 7 ++++++-
> > >  1 file changed, 6 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/net/wireless/intel/iwlegacy/3945-rs.c b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
> > > index 1826c37c090c..c13268093a6e 100644
> > > --- a/drivers/net/wireless/intel/iwlegacy/3945-rs.c
> > > +++ b/drivers/net/wireless/intel/iwlegacy/3945-rs.c
> > > @@ -626,8 +626,13 @@ il3945_rs_get_rate(void *il_r, struct ieee80211_sta *sta, void *il_sta,
> > >
> > >     D_RATE("enter\n");
> > >
> > > +   if (!il_sta) {
> > > +           D_RATE("leave: No STA il data available!\n");
> > > +           return;
> > > +   }
> > > +
> > >     /* Treat uninitialized rate scaling data same as non-existing. */
> > > -   if (rs_sta && !rs_sta->il) {
> > > +   if (!rs_sta->il) {
> > >             D_RATE("Rate scaling information not initialized yet.\n");
> > >             il_sta = NULL;
> > Please also change to return here instead of setting il_sta to NULL.
> > And make D_RATE messages similar to il3945_rs_tx_status() i.e. :
> >
> >           if (!il_sta) {
> >                   D_RATE("leave: No STA il data to update!\n");
> >                   return;
> >           }
> >
> >           /* Treat uninitialized rate scaling data same as non-existing. */
> >           if (!rs_sta->il) {
> >                   D_RATE("leave: STA il data uninitialized!\n");
> >                   return;
> >           }
>
> Please also add 'wifi:' prefix to the patch title.
>
> Thanks
> Stanislaw

Hi Stanislaw,

Thank you for your reply. I will update the patch according to your
suggestions and submit a v2.

Sincerely,
Tuo