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] [thread-next>] [day] [month] [year] [list]
Date:   Sat, 25 Mar 2017 18:03:36 +0000
From:   Jonathan Cameron <jic23@...nel.org>
To:     Nikolaus Schulz <nikolaus.schulz@...onic-design.de>,
        Hartmut Knaack <knaack.h@....de>,
        Lars-Peter Clausen <lars@...afoo.de>,
        Peter Meerwald-Stadler <pmeerw@...erw.net>,
        "open list:IIO SUBSYSTEM AND DRIVERS" <linux-iio@...r.kernel.org>,
        open list <linux-kernel@...r.kernel.org>
Cc:     stable@...r.kernel.org
Subject: Re: [PATCH] iio: core: Fix IIO_VAL_FRACTIONAL_LOG2 for negative
 values

On 24/03/17 12:41, Nikolaus Schulz wrote:
> Fix formatting of negative values of type IIO_VAL_FRACTIONAL_LOG2 by
> switching from do_div(), which can't handle negative numbers, to
> div_s64_rem().  Also use shift_right for shifting, which is safe with
> negative values.
> 
> Signed-off-by: Nikolaus Schulz <nikolaus.schulz@...onic-design.de>
> Cc: stable@...r.kernel.org
Looks sane to me, but I'd like to give others time to comment on this
just in case there is some odd condition neither of us has thought of!

Give me a poke if we get nothing else for a few weeks.

Jonathan
> ---
>  drivers/iio/industrialio-core.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index d18ded4..3ff91e0 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -610,10 +610,9 @@ static ssize_t __iio_format_value(char *buf, size_t len, unsigned int type,
>  		tmp0 = (int)div_s64_rem(tmp, 1000000000, &tmp1);
>  		return snprintf(buf, len, "%d.%09u", tmp0, abs(tmp1));
>  	case IIO_VAL_FRACTIONAL_LOG2:
> -		tmp = (s64)vals[0] * 1000000000LL >> vals[1];
> -		tmp1 = do_div(tmp, 1000000000LL);
> -		tmp0 = tmp;
> -		return snprintf(buf, len, "%d.%09u", tmp0, tmp1);
> +		tmp = shift_right((s64)vals[0] * 1000000000LL, vals[1]);
> +		tmp0 = (int)div_s64_rem(tmp, 1000000000LL, &tmp1);
> +		return snprintf(buf, len, "%d.%09u", tmp0, abs(tmp1));
>  	case IIO_VAL_INT_MULTIPLE:
>  	{
>  		int i;
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ