[lvc-project] [PATCH] [media] saa7134: Unchecked i2c_transfer function result fixed

Fedor Pchelkin pchelkin at ispras.ru
Fri Mar 15 14:24:43 MSK 2024


On Fri, 16. Feb 15:40, Aleksandr Burakov wrote:
> Return value of function 'i2c_transfer' is not checked that
> may cause undefined behaviour.
> 
> Found by Linux Verification Center (linuxtesting.org) with SVACE.
> 
> Fixes: 2cf36ac44730 ("[PATCH] v4l: 656: added support for the following cards")
> Signed-off-by: Aleksandr Burakov <a.burakov at rosalinux.ru>

Здравствуйте, Александр!

Немного не понял про Won't fix метку в Svacer - это подходит под
Confirmed, раз уж подготовлен патч. И критичность Major, думаю.

Возвращаемое значение функции i2c_transfer() проверяется в остальных
частях ядра, даже если отправляется всего одно сообщение.

Для подобного в функции mt352_pinnacle_tuner_set_params() предполагается
исправление?

Текущий патч добавлен в ветки linux-5.10-lvc-next и linux-6.1-lvc-next.

В публичной linux-5.10-lvc [1] появится при выходе ближайшего релиза.

Спасибо за патч!

[1]: https://git.linuxtesting.ru/pub/scm/linux/kernel/git/lvc/linux-stable.git/log/

> ---
>  drivers/media/pci/saa7134/saa7134-dvb.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/pci/saa7134/saa7134-dvb.c b/drivers/media/pci/saa7134/saa7134-dvb.c
> index 9c6cfef03331..a66df6adfaad 100644
> --- a/drivers/media/pci/saa7134/saa7134-dvb.c
> +++ b/drivers/media/pci/saa7134/saa7134-dvb.c
> @@ -466,7 +466,9 @@ static int philips_europa_tuner_sleep(struct dvb_frontend *fe)
>  	/* switch the board to analog mode */
>  	if (fe->ops.i2c_gate_ctrl)
>  		fe->ops.i2c_gate_ctrl(fe, 1);
> -	i2c_transfer(&dev->i2c_adap, &analog_msg, 1);
> +	if (i2c_transfer(&dev->i2c_adap, &analog_msg, 1) != 1)
> +		return -EIO;
> +
>  	return 0;
>  }
>  
> @@ -1018,7 +1020,9 @@ static int md8800_set_voltage2(struct dvb_frontend *fe,
>  	else
>  		wbuf[1] = rbuf & 0xef;
>  	msg[0].len = 2;
> -	i2c_transfer(&dev->i2c_adap, msg, 1);
> +	if (i2c_transfer(&dev->i2c_adap, msg, 1) != 1)
> +		return -EIO;
> +
>  	return 0;
>  }
>  
> -- 
> 2.25.1
> 



More information about the lvc-project mailing list