[lvc-project] [PATCH 5.10] md: fix NULL pointer dereference at reregister_snapshot()

Fedor Pchelkin pchelkin at ispras.ru
Mon Sep 22 17:46:32 MSK 2025


On Mon, 22. Sep 17:42, Alexandr Sapozhnkiov wrote:
> From: Alexandr Sapozhnikov <alsp705 at gmail.com>
> 
> Return value of a function '__lookup_origin' is dereferenced 
> at dm-snap.c:596 without checking for NULL, but it is usually 
> checked for this function
> 
> Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
> Signed-off-by: Alexandr Sapozhnikov <alsp705 at gmail.com>
> 
> ---

Добрый день!

Настоятельно рекомендуем отправлять патчи сначала для предварительного
ревью со стороны Центра, т.к. из патча в патч повторяются недочёты в
оформлении, апстримных мэйнтейнеров не интересует ветка 5.10, ну и лишний
раз предварительно обсудить проблему от стат. анализатора зачастую бывает
полезно.

>  drivers/md/dm-snap.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c
> index 4668b2cd98f4..105f6e768ad1 100644
> --- a/drivers/md/dm-snap.c
> +++ b/drivers/md/dm-snap.c
> @@ -590,12 +590,15 @@ static int register_snapshot(struct dm_snapshot *snap)
>   */
>  static void reregister_snapshot(struct dm_snapshot *s)
>  {
> +	struct origin *o;
>  	struct block_device *bdev = s->origin->bdev;
>  
>  	down_write(&_origins_lock);
> +	o = __lookup_origin(s->origin->bdev);
>  
>  	list_del(&s->list);
> -	__insert_snapshot(__lookup_origin(bdev), s);
> +	if (o)
> +		__insert_snapshot(o, s);
>  
>  	up_write(&_origins_lock);
>  }
> -- 
> 2.43.0
> 
> 
> _______________________________________________
> lvc-project mailing list
> lvc-project at linuxtesting.org
> http://linuxtesting.org/cgi-bin/mailman/listinfo/lvc-project



More information about the lvc-project mailing list