dm table: check that a dm device doesn't reference itself

If a DM device's table references itself, it will crash the kernel with an
infinite recursion.  Check for a self-reference in dm_get_device(). This
is a quick check, but it won't catch more complicated circular references.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@kernel.org>
This commit is contained in:
Benjamin Marzinski 2023-01-31 15:22:57 -06:00 committed by Mike Snitzer
parent efdd3c3375
commit d1c0e1587e

View File

@ -364,6 +364,8 @@ int dm_get_device(struct dm_target *ti, const char *path, fmode_t mode,
if (!dev)
return -ENODEV;
}
if (dev == disk_devt(t->md->disk))
return -EINVAL;
dd = find_device(&t->devices, dev);
if (!dd) {