diff mbox series

[net-next] ath11k: fix uninitialized return in ath11k_spectral_process_data()

Message ID 20200619142922.GA267142@mwanda (mailing list archive)
State Accepted
Commit c7187acc3cd08a17e7b506b2b5277f42d1504d29
Delegated to: Kalle Valo
Headers show
Series [net-next] ath11k: fix uninitialized return in ath11k_spectral_process_data() | expand

Commit Message

Dan Carpenter June 19, 2020, 2:29 p.m. UTC
There is a success path where "ret" isn't initialized where we never
have a ATH11K_SPECTRAL_TAG_SCAN_SEARCH and then ret isn't initialized.

Fixes: 9d11b7bff950 ("ath11k: add support for spectral scan")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
 drivers/net/wireless/ath/ath11k/spectral.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Kalle Valo June 22, 2020, 2:51 p.m. UTC | #1
Dan Carpenter <dan.carpenter@oracle.com> writes:

> There is a success path where "ret" isn't initialized where we never
> have a ATH11K_SPECTRAL_TAG_SCAN_SEARCH and then ret isn't initialized.
>
> Fixes: 9d11b7bff950 ("ath11k: add support for spectral scan")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> ---
>  drivers/net/wireless/ath/ath11k/spectral.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/ath/ath11k/spectral.c b/drivers/net/wireless/ath/ath11k/spectral.c
> index 1c5d65bb411f..bfbf905f7507 100644
> --- a/drivers/net/wireless/ath/ath11k/spectral.c
> +++ b/drivers/net/wireless/ath/ath11k/spectral.c
> @@ -677,7 +677,7 @@ static int ath11k_spectral_process_data(struct ath11k *ar,
>  	u32 data_len, i;
>  	u8 sign, tag;
>  	int tlv_len, sample_sz;
> -	int ret;
> +	int ret = 0;
>  	bool quit = false;

I try to avoid initialising ret variables so I would like find another
way. What about doing this (completely untested!) in the end of the
function:

        return 0;

err:
	kfree(fft_sample);
unlock:
	spin_unlock_bh(&ar->spectral.lock);
	return ret;
Dan Carpenter June 22, 2020, 5:18 p.m. UTC | #2
On Mon, Jun 22, 2020 at 05:51:16PM +0300, Kalle Valo wrote:
> Dan Carpenter <dan.carpenter@oracle.com> writes:
> 
> > There is a success path where "ret" isn't initialized where we never
> > have a ATH11K_SPECTRAL_TAG_SCAN_SEARCH and then ret isn't initialized.
> >
> > Fixes: 9d11b7bff950 ("ath11k: add support for spectral scan")
> > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> > ---
> >  drivers/net/wireless/ath/ath11k/spectral.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/wireless/ath/ath11k/spectral.c b/drivers/net/wireless/ath/ath11k/spectral.c
> > index 1c5d65bb411f..bfbf905f7507 100644
> > --- a/drivers/net/wireless/ath/ath11k/spectral.c
> > +++ b/drivers/net/wireless/ath/ath11k/spectral.c
> > @@ -677,7 +677,7 @@ static int ath11k_spectral_process_data(struct ath11k *ar,
> >  	u32 data_len, i;
> >  	u8 sign, tag;
> >  	int tlv_len, sample_sz;
> > -	int ret;
> > +	int ret = 0;
> >  	bool quit = false;
> 
> I try to avoid initialising ret variables so I would like find another
> way. What about doing this (completely untested!) in the end of the
> function:
> 
>         return 0;
> 
> err:
> 	kfree(fft_sample);
> unlock:
> 	spin_unlock_bh(&ar->spectral.lock);
> 	return ret;

I normally avoid it as well...  If I were to redo this patch, I would
probably do:

	ret = 0;
err:
	kfree(fft_sample);
unlock:
	spin_unlock_bh(&ar->spectral.lock);
	return ret;

Would that be better?

regards,
dan carpenter
Kalle Valo Sept. 7, 2020, 4:56 p.m. UTC | #3
Dan Carpenter <dan.carpenter@oracle.com> writes:

> On Mon, Jun 22, 2020 at 05:51:16PM +0300, Kalle Valo wrote:
>> Dan Carpenter <dan.carpenter@oracle.com> writes:
>> 
>> > There is a success path where "ret" isn't initialized where we never
>> > have a ATH11K_SPECTRAL_TAG_SCAN_SEARCH and then ret isn't initialized.
>> >
>> > Fixes: 9d11b7bff950 ("ath11k: add support for spectral scan")
>> > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>> > ---
>> >  drivers/net/wireless/ath/ath11k/spectral.c | 2 +-
>> >  1 file changed, 1 insertion(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/net/wireless/ath/ath11k/spectral.c b/drivers/net/wireless/ath/ath11k/spectral.c
>> > index 1c5d65bb411f..bfbf905f7507 100644
>> > --- a/drivers/net/wireless/ath/ath11k/spectral.c
>> > +++ b/drivers/net/wireless/ath/ath11k/spectral.c
>> > @@ -677,7 +677,7 @@ static int ath11k_spectral_process_data(struct ath11k *ar,
>> >  	u32 data_len, i;
>> >  	u8 sign, tag;
>> >  	int tlv_len, sample_sz;
>> > -	int ret;
>> > +	int ret = 0;
>> >  	bool quit = false;
>> 
>> I try to avoid initialising ret variables so I would like find another
>> way. What about doing this (completely untested!) in the end of the
>> function:
>> 
>>         return 0;
>> 
>> err:
>> 	kfree(fft_sample);
>> unlock:
>> 	spin_unlock_bh(&ar->spectral.lock);
>> 	return ret;
>
> I normally avoid it as well...  If I were to redo this patch, I would
> probably do:
>
> 	ret = 0;
> err:
> 	kfree(fft_sample);
> unlock:
> 	spin_unlock_bh(&ar->spectral.lock);
> 	return ret;
>
> Would that be better?

Ah, my proposal was buggy. So yes, this is definitely better :) I
changed now the patch in the pending branch, please check:

https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?h=pending&id=586f8e6779fa75ade112cb48606794e034e0ff1d
Kalle Valo Sept. 9, 2020, 6:49 a.m. UTC | #4
Dan Carpenter <dan.carpenter@oracle.com> wrote:

> There is a success path where "ret" isn't initialized where we never
> have a ATH11K_SPECTRAL_TAG_SCAN_SEARCH and then ret isn't initialized.
> 
> Fixes: 9d11b7bff950 ("ath11k: add support for spectral scan")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

Patch applied to ath-next branch of ath.git, thanks.

c7187acc3cd0 ath11k: fix uninitialized return in ath11k_spectral_process_data()
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/spectral.c b/drivers/net/wireless/ath/ath11k/spectral.c
index 1c5d65bb411f..bfbf905f7507 100644
--- a/drivers/net/wireless/ath/ath11k/spectral.c
+++ b/drivers/net/wireless/ath/ath11k/spectral.c
@@ -677,7 +677,7 @@  static int ath11k_spectral_process_data(struct ath11k *ar,
 	u32 data_len, i;
 	u8 sign, tag;
 	int tlv_len, sample_sz;
-	int ret;
+	int ret = 0;
 	bool quit = false;
 
 	spin_lock_bh(&ar->spectral.lock);