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, 18 Jun 2022 18:26:12 -0700
From:   Randy Dunlap <rdunlap@...radead.org>
To:     Zhang Boyang <zhangboyang.id@...il.com>,
        linux-kernel@...r.kernel.org
Cc:     Ferdinand Blomqvist <ferdinand.blomqvist@...il.com>,
        Thomas Gleixner <tglx@...utronix.de>,
        Kees Cook <keescook@...omium.org>,
        Ivan Djelic <ivan.djelic@...rot.com>,
        Boris Brezillon <boris.brezillon@...tlin.com>,
        Miquel Raynal <miquel.raynal@...tlin.com>
Subject: Re: [PATCH v2 5/5] rslib: Fix integer overflow on large fcr or prim

Hi--


Somehow some of the kernel-doc notation in these files has been
entered incorrectly and you are propagating that mistake...
Please see below for more.


On 6/17/22 07:46, Zhang Boyang wrote:

> Signed-off-by: Zhang Boyang <zhangboyang.id@...il.com>
> ---
>  include/linux/rslib.h           | 22 ++++++++++++
>  lib/reed_solomon/decode_rs.c    | 60 +++++++++++++++++++--------------
>  lib/reed_solomon/reed_solomon.c | 30 ++++++++++++-----
>  lib/reed_solomon/test_rslib.c   |  8 ++---
>  4 files changed, 82 insertions(+), 38 deletions(-)
> 
> diff --git a/include/linux/rslib.h b/include/linux/rslib.h
> index 44ec7c6f24b2..29abfb2de257 100644
> --- a/include/linux/rslib.h
> +++ b/include/linux/rslib.h

> @@ -127,6 +129,26 @@ static inline int rs_modnn(struct rs_codec *rs, int x)
>  	return x;
>  }
>  
> +/** modulo replacement for galois field arithmetics

/**
 * rs_modnn_mul() - modulo replacement for galois field arithmetics

> + *
> + *  @rs:	Pointer to the RS codec
> + *  @a:		0 <= a <= nn ; a*b is the value to reduce
> + *  @b:		0 <= b <= nn ; a*b is the value to reduce
> + *
> + *  Same as rs_modnn(a*b), but avoid interger overflow when calculating a*b

                                        integer                            a * b


> +*/
> +static inline int rs_modnn_mul(struct rs_codec *rs, int a, int b)
> +{
> +	/* nn <= 0xFFFF, so (a * b) will not overflow uint32_t */
> +	uint32_t x = (uint32_t)a * (uint32_t)b;
> +	uint32_t nn = (uint32_t)rs->nn;
> +	while (x >= nn) {
> +		x -= nn;
> +		x = (x >> rs->mm) + (x & nn);
> +	}
> +	return (int)x;
> +}
> +
>  /** modulo replacement for galois field arithmetics

/**
 * rs_modnn() - modulo replacement for galois field arithmetics

>   *
>   *  @rs:	Pointer to the RS codec



-- 
~Randy

Powered by blists - more mailing lists