From: Benjamin Marzinski Date: Tue, 31 Jan 2023 21:22:57 +0000 (-0600) Subject: dm table: check that a dm device doesn't reference itself X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=d1c0e1587e6874cec3e3615097b907a9186505c8;p=linux.git 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 Signed-off-by: Mike Snitzer --- diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c index 8541d5688f3a6..24ad42b385c18 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) {