2019-08-21 18:35:29

by Colin King

[permalink] [raw]
Subject: re: Added Realtek rtl8192u driver to staging - static analysis report.

Hi,

Static analysis of linux-next picked up an issue with the following commit:

commit 8fc8598e61f6f384f3eaf1d9b09500c12af47b37
Author: Jerry Chuang <[email protected]>
Date: Tue Nov 3 07:17:11 2009 -0200

Staging: Added Realtek rtl8192u driver to staging

In drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c we have:

CID 48331 (#1 of 1): Unused value (UNUSED_VALUE) assigned_pointer

Assigning value from ieee->crypt[ieee->tx_keyidx] to crypt here, but
that stored value is not used.

746 crypt = ieee->crypt[ieee->tx_keyidx];
747 if (encrypt)
748 beacon_buf->capability |=
cpu_to_le16(WLAN_CAPABILITY_PRIVACY);

Pointer crypt is being assigned but is never used afterwards. Now
either this is a redundant assignment and can be removed OR maybe crypt
should be checked and there is a typo, e.g.:

crypt = ieee->crypt[ieee->tx_keyidx];
if (crypt)
...

Either way, it's not clear to me and I think the code needs cleaning up.
Any ideas?

Colin


2019-08-22 00:47:34

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: Added Realtek rtl8192u driver to staging - static analysis report.

On Wed, Aug 21, 2019 at 07:18:39PM +0100, Colin Ian King wrote:
> Hi,
>
> Static analysis of linux-next picked up an issue with the following commit:
>
> commit 8fc8598e61f6f384f3eaf1d9b09500c12af47b37
> Author: Jerry Chuang <[email protected]>
> Date: Tue Nov 3 07:17:11 2009 -0200
>
> Staging: Added Realtek rtl8192u driver to staging
>
> In drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c we have:
>
> CID 48331 (#1 of 1): Unused value (UNUSED_VALUE) assigned_pointer
>
> Assigning value from ieee->crypt[ieee->tx_keyidx] to crypt here, but
> that stored value is not used.
>
> 746 crypt = ieee->crypt[ieee->tx_keyidx];
> 747 if (encrypt)
> 748 beacon_buf->capability |=
> cpu_to_le16(WLAN_CAPABILITY_PRIVACY);
>
> Pointer crypt is being assigned but is never used afterwards. Now
> either this is a redundant assignment and can be removed OR maybe crypt
> should be checked and there is a typo, e.g.:
>
> crypt = ieee->crypt[ieee->tx_keyidx];
> if (crypt)
> ...
>
> Either way, it's not clear to me and I think the code needs cleaning up.
> Any ideas?

10+ year old code, yeah!!!

Just guess, who knows, no one seems to care :(

greg k-h

2019-08-22 02:13:59

by Stephen Brennan

[permalink] [raw]
Subject: Re: Added Realtek rtl8192u driver to staging - static analysis report.

> > Either way, it's not clear to me and I think the code needs cleaning
> > up.
> > Any ideas?
>
> 10+ year old code, yeah!!!
>
> Just guess, who knows, no one seems to care :(

I'm at least interested in helping with cleaning the code and learning
about the driver, maybe fixing up logical errors like this at some point.
But I have had some trouble finding the hardware to test on. Maybe that's
part of the issue?

2019-08-22 09:35:25

by Dan Carpenter

[permalink] [raw]
Subject: Re: Added Realtek rtl8192u driver to staging - static analysis report.

On Wed, Aug 21, 2019 at 07:18:39PM +0100, Colin Ian King wrote:
> Hi,
>
> Static analysis of linux-next picked up an issue with the following commit:
>
> commit 8fc8598e61f6f384f3eaf1d9b09500c12af47b37
> Author: Jerry Chuang <[email protected]>
> Date: Tue Nov 3 07:17:11 2009 -0200
>
> Staging: Added Realtek rtl8192u driver to staging
>
> In drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c we have:
>
> CID 48331 (#1 of 1): Unused value (UNUSED_VALUE) assigned_pointer
>
> Assigning value from ieee->crypt[ieee->tx_keyidx] to crypt here, but
> that stored value is not used.
>
> 746 crypt = ieee->crypt[ieee->tx_keyidx];
> 747 if (encrypt)
> 748 beacon_buf->capability |=
> cpu_to_le16(WLAN_CAPABILITY_PRIVACY);

Earlir in the function we have:

695 crypt = ieee->crypt[ieee->tx_keyidx];
696
697 encrypt = ieee->host_encrypt && crypt && crypt->ops &&
698 ((0 == strcmp(crypt->ops->name, "WEP") || wpa_ie_len));
699 /* HT ralated element */

So the "crypt" assignment is dublicate and should definitely be removed.
The "if (encrypt) " check looks correct and it sort of matches what we
do in ieee80211_assoc_resp().

840 encrypt = crypt && crypt->ops;
841
842 if (encrypt)
843 assoc->capability |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY);
844

So let's leave it as-is, just delete the crypt assignment. If you want,
you can send this patch and I can give you a Reviewed-by tag or if you
want I can send the patch and give you Reported-by credit.

regards,
dan carpenter