[dm-devel] [PATCH] dm-table: Check that a dm device doesn't reference itself
Benjamin Marzinski
bmarzins at redhat.com
Wed Feb 8 04:21:40 UTC 2023
If a dm device 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 at redhat.com>
---
drivers/md/dm-table.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index 8541d5688f3a..24ad42b385c1 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -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) {
--
2.30.2
More information about the dm-devel
mailing list