Re: net: atm: Spectre v1 fix introduced bug in bcb964012d1b in -stable

From: Gustavo A. R. Silva
Date: Mon May 20 2019 - 10:18:19 EST




On 5/20/19 7:40 AM, Pavel Machek wrote:
>
> In lecd_attach, if arg is < 0, it was treated as 0. Spectre v1 fix
> changed that. Bug does not exist in mainline AFAICT.
>

NACK

array_index_nospec() macro returns zero if *arg* is out of bounds.

In any case, if the "bug" does not exist in mainline, what should be
done is to port the code that fixed it in mainline to old kernels,
not randomly add a "fix" here and there because that means we are
breaking backward compatibility.

--
Gustavo

> Signed-off-by: Pavel Machek <pavel@xxxxxxx>
> # for 4.19.y
>
> diff --git a/net/atm/lec.c b/net/atm/lec.c
> index ad4f829193f0..ed279cd912f4 100644
> --- a/net/atm/lec.c
> +++ b/net/atm/lec.c
> @@ -731,7 +731,7 @@ static int lecd_attach(struct atm_vcc *vcc, int arg)
> i = arg;
> if (arg >= MAX_LEC_ITF)
> return -EINVAL;
> - i = array_index_nospec(arg, MAX_LEC_ITF);
> + i = array_index_nospec(i, MAX_LEC_ITF);
> if (!dev_lec[i]) {
> int size;
>
>