[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