lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20200513145347.GX25962@localhost>
Date:   Wed, 13 May 2020 16:53:47 +0200
From:   Johan Hovold <johan@...nel.org>
To:     Wei Yongjun <weiyongjun1@...wei.com>
Cc:     Johan Hovold <johan@...nel.org>, linux-kernel@...r.kernel.org,
        kernel-janitors@...r.kernel.org, Hulk Robot <hulkci@...wei.com>
Subject: Re: [PATCH -next] gnss: sirf: fix error return code in sirf_probe()

On Thu, May 07, 2020 at 09:42:52AM +0000, Wei Yongjun wrote:
> Fix to return a negative error code from the error handling
> case instead of 0, as done elsewhere in this function.
> 
> Fixes: d2efbbd18b1e ("gnss: add driver for sirfstar-based receivers")
> Reported-by: Hulk Robot <hulkci@...wei.com>
> Signed-off-by: Wei Yongjun <weiyongjun1@...wei.com>
> ---
>  drivers/gnss/sirf.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gnss/sirf.c b/drivers/gnss/sirf.c
> index effed3a8d398..2ecb1d3e8eeb 100644
> --- a/drivers/gnss/sirf.c
> +++ b/drivers/gnss/sirf.c
> @@ -439,14 +439,18 @@ static int sirf_probe(struct serdev_device *serdev)
>  
>  	data->on_off = devm_gpiod_get_optional(dev, "sirf,onoff",
>  			GPIOD_OUT_LOW);
> -	if (IS_ERR(data->on_off))
> +	if (IS_ERR(data->on_off)) {
> +		ret = PTR_ERR(data->on_off);
>  		goto err_put_device;
> +	}
>  
>  	if (data->on_off) {
>  		data->wakeup = devm_gpiod_get_optional(dev, "sirf,wakeup",
>  				GPIOD_IN);
> -		if (IS_ERR(data->wakeup))
> +		if (IS_ERR(data->wakeup)) {
> +			ret = PTR_ERR(data->wakeup);
>  			goto err_put_device;
> +		}
>  
>  		ret = regulator_enable(data->vcc);
>  		if (ret)

Good catch! Now applied with a stable tag as this would lead to a
use-after-free on driver unbind.

Johan

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ