[lvc-project] [PATCH] drivers: core: prevent dereferencing of a null pointer in device_move()

Fedor Pchelkin pchelkin at ispras.ru
Tue Mar 19 14:47:13 MSK 2024


On Thu, 07. Mar 16:11, Roman Smirnov wrote:
> Parameter new_parent can be equal to NULL. In this case if the 
> drm_order parameter is equal to DRM_ORDER_DEV_AFTER_PARENT or
> DRM_ORDER_PARENT_BEFORE_DEV, a null pointer will be dereferenced.
> 
> Found by Linux Verification Center (linuxtesting.org) with Svace.
> 
> Signed-off-by: Roman Smirnov <r.smirnov at omp.ru>
> Reviewed-by: Sergey Shtylyov <s.shtylyov at omp.ru>

По этому патчу у меня тот же вопрос насчет релевантности для stable.

Если в будущем появится код, который может по своей неосторожности
передавать в эту функцию некорректную комбинацию параметров и его
бэкпортируют в stable-ветки, то проблема будет присутствовать и там.
Это вырожденный случай, но тем не менее, если я ничего не путаю, патчи
с валидацией внутреннего API в ядре обычно подлежат бэкпортированию.
Прошу поправить, если это не тот случай.

> ---
>  drivers/base/core.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/base/core.c b/drivers/base/core.c
> index 9828da9b933c..9af7ccf56f42 100644
> --- a/drivers/base/core.c
> +++ b/drivers/base/core.c
> @@ -4593,10 +4593,18 @@ int device_move(struct device *dev, struct device *new_parent,
>  	case DPM_ORDER_NONE:
>  		break;
>  	case DPM_ORDER_DEV_AFTER_PARENT:
> +		if (!new_parent) {
> +			error = -EINVAL;
> +			goto out;
> +		}
>  		device_pm_move_after(dev, new_parent);
>  		devices_kset_move_after(dev, new_parent);
>  		break;
>  	case DPM_ORDER_PARENT_BEFORE_DEV:
> +		if (!new_parent) {
> +			error = -EINVAL;
> +			goto out;
> +		}
>  		device_pm_move_before(new_parent, dev);
>  		devices_kset_move_before(new_parent, dev);
>  		break;
> -- 
> 2.34.1
> 



More information about the lvc-project mailing list