2020-03-30 16:47:31

by John B. Wyatt IV

[permalink] [raw]
Subject: [PATCH v4] staging: vt6656: add error code handling to unused variable

Add error code handling to unused 'ret' variable that was never used.
Return an error code from functions called within vnt_radio_power_on.

Issue reported by coccinelle (coccicheck).

Suggested-by: Quentin Deslandes <[email protected]>
Suggested-by: Stefano Brivio <[email protected]>
Suggested-by: Julia Lawall <[email protected]>
Reviewed-by: Quentin Deslandes <[email protected]>
Signed-off-by: John B. Wyatt IV <[email protected]>
---
v4: Move Suggested-by: Julia Lawall above seperator line.
Add Reviewed-by tag as requested by Quentin Deslandes.
Suggested-by: Quentin Deslandes <[email protected]>

v3: Forgot to add v2 code changes to commit.

v2: Replace goto statements with return.
Remove last if check because it was unneeded.
Suggested-by: Julia Lawall <[email protected]>

drivers/staging/vt6656/card.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/vt6656/card.c b/drivers/staging/vt6656/card.c
index dc3ab10eb630..239012539e73 100644
--- a/drivers/staging/vt6656/card.c
+++ b/drivers/staging/vt6656/card.c
@@ -723,9 +723,13 @@ int vnt_radio_power_on(struct vnt_private *priv)
{
int ret = 0;

- vnt_exit_deep_sleep(priv);
+ ret = vnt_exit_deep_sleep(priv);
+ if (ret)
+ return ret;

- vnt_mac_reg_bits_on(priv, MAC_REG_HOSTCR, HOSTCR_RXON);
+ ret = vnt_mac_reg_bits_on(priv, MAC_REG_HOSTCR, HOSTCR_RXON);
+ if (ret)
+ return ret;

switch (priv->rf_type) {
case RF_AL2230:
@@ -734,14 +738,14 @@ int vnt_radio_power_on(struct vnt_private *priv)
case RF_VT3226:
case RF_VT3226D0:
case RF_VT3342A0:
- vnt_mac_reg_bits_on(priv, MAC_REG_SOFTPWRCTL,
- (SOFTPWRCTL_SWPE2 | SOFTPWRCTL_SWPE3));
+ ret = vnt_mac_reg_bits_on(priv, MAC_REG_SOFTPWRCTL,
+ (SOFTPWRCTL_SWPE2 | SOFTPWRCTL_SWPE3));
break;
}
+ if (ret)
+ return ret;

- vnt_mac_reg_bits_off(priv, MAC_REG_GPIOCTL1, GPIO3_INTMD);
-
- return ret;
+ return vnt_mac_reg_bits_off(priv, MAC_REG_GPIOCTL1, GPIO3_INTMD);
}

void vnt_set_bss_mode(struct vnt_private *priv)
--
2.25.1


2020-03-30 17:22:32

by Stefano Brivio

[permalink] [raw]
Subject: Re: [Outreachy kernel] [PATCH v4] staging: vt6656: add error code handling to unused variable

On Mon, 30 Mar 2020 09:45:30 -0700
"John B. Wyatt IV" <[email protected]> wrote:

> Add error code handling to unused 'ret' variable that was never used.
> Return an error code from functions called within vnt_radio_power_on.
>
> Issue reported by coccinelle (coccicheck).
>
> Suggested-by: Quentin Deslandes <[email protected]>
> Suggested-by: Stefano Brivio <[email protected]>
> Suggested-by: Julia Lawall <[email protected]>
> Reviewed-by: Quentin Deslandes <[email protected]>
> Signed-off-by: John B. Wyatt IV <[email protected]>
> ---
> v4: Move Suggested-by: Julia Lawall above seperator line.

Actually, as Julia didn't suggest this patch, the place where you had
this in v3 was the right one.

> Add Reviewed-by tag as requested by Quentin Deslandes.
> Suggested-by: Quentin Deslandes <[email protected]>
>
> v3: Forgot to add v2 code changes to commit.
>
> v2: Replace goto statements with return.
> Remove last if check because it was unneeded.
> Suggested-by: Julia Lawall <[email protected]>
>
> drivers/staging/vt6656/card.c | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/staging/vt6656/card.c b/drivers/staging/vt6656/card.c
> index dc3ab10eb630..239012539e73 100644
> --- a/drivers/staging/vt6656/card.c
> +++ b/drivers/staging/vt6656/card.c
> @@ -723,9 +723,13 @@ int vnt_radio_power_on(struct vnt_private *priv)
> {
> int ret = 0;
>
> - vnt_exit_deep_sleep(priv);
> + ret = vnt_exit_deep_sleep(priv);
> + if (ret)
> + return ret;
>
> - vnt_mac_reg_bits_on(priv, MAC_REG_HOSTCR, HOSTCR_RXON);
> + ret = vnt_mac_reg_bits_on(priv, MAC_REG_HOSTCR, HOSTCR_RXON);
> + if (ret)
> + return ret;
>
> switch (priv->rf_type) {
> case RF_AL2230:
> @@ -734,14 +738,14 @@ int vnt_radio_power_on(struct vnt_private *priv)
> case RF_VT3226:
> case RF_VT3226D0:
> case RF_VT3342A0:
> - vnt_mac_reg_bits_on(priv, MAC_REG_SOFTPWRCTL,
> - (SOFTPWRCTL_SWPE2 | SOFTPWRCTL_SWPE3));
> + ret = vnt_mac_reg_bits_on(priv, MAC_REG_SOFTPWRCTL,
> + (SOFTPWRCTL_SWPE2 | SOFTPWRCTL_SWPE3));

Note that you broke the alignment here: the ( should be aligned with
'priv'. By the way, those parentheses are useless, but it's not
something you should fix in this patch.

> break;

Unless gcc whines (or checkpatch, even), you could replace this break
by the if (ret) return ret; below. If some tool is not happy with this,
though, you should still move that here: ret will be checked only for
those values of 'rf_type'.

> }
> + if (ret)
> + return ret;

Another thing that should be considered in this function is to restore
the previous hardware state on failures, but I think the way you're
handling this is possibly the safest, without hardware to test on.

--
Stefano

2020-03-30 18:43:07

by Malcolm Priestley

[permalink] [raw]
Subject: Re: [Outreachy kernel] [PATCH v4] staging: vt6656: add error code handling to unused variable

On 30/03/2020 18:14, Stefano Brivio wrote:
> On Mon, 30 Mar 2020 09:45:30 -0700
> "John B. Wyatt IV" <[email protected]> wrote:
>
>> Add error code handling to unused 'ret' variable that was never used.
>> Return an error code from functions called within vnt_radio_power_on.
>>
>> Issue reported by coccinelle (coccicheck).
>>
>> Suggested-by: Quentin Deslandes <[email protected]>
>> Suggested-by: Stefano Brivio <[email protected]>
>> Suggested-by: Julia Lawall <[email protected]>
>> Reviewed-by: Quentin Deslandes <[email protected]>
>> Signed-off-by: John B. Wyatt IV <[email protected]>
>> ---
>> v4: Move Suggested-by: Julia Lawall above seperator line.
>
> Actually, as Julia didn't suggest this patch, the place where you had
> this in v3 was the right one.
---snip
>>
>> switch (priv->rf_type) {
>> case RF_AL2230:
>> @@ -734,14 +738,14 @@ int vnt_radio_power_on(struct vnt_private *priv)
>> case RF_VT3226:
>> case RF_VT3226D0:
>> case RF_VT3342A0:
>> - vnt_mac_reg_bits_on(priv, MAC_REG_SOFTPWRCTL,
>> - (SOFTPWRCTL_SWPE2 | SOFTPWRCTL_SWPE3));
>> + ret = vnt_mac_reg_bits_on(priv, MAC_REG_SOFTPWRCTL,
>> + (SOFTPWRCTL_SWPE2 | SOFTPWRCTL_SWPE3));
>
>
> Another thing that should be considered in this function is to restore
> the previous hardware state on failures, but I think the way you're
> handling this is possibly the safest, without hardware to test on.
>
This section of hardware is controlled by mac80211 as is most of the driver.

Users can turn the wireless off then on again to try again but to date
this is not known to fail with the hardware I have used.

No problems with hardware with this patch.

Tested-by: Malcolm Priestley <[email protected]>