diff options
author | Helen Koike <helen.koike@collabora.com> | 2019-04-26 17:09:55 -0300 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2019-04-30 16:51:23 -0400 |
commit | 8e890c1ab1b1e0f765cd8da82c4dee011698a5e8 (patch) | |
tree | 3722a8c549b69287410427e2820bc422aa762a11 /drivers/md/dm-init.c | |
parent | e4f3fabd67480bf2ad3f71aa6126ffb8bb7dc712 (diff) | |
download | lwn-8e890c1ab1b1e0f765cd8da82c4dee011698a5e8.tar.gz lwn-8e890c1ab1b1e0f765cd8da82c4dee011698a5e8.zip |
dm init: fix max devices/targets checks
dm-init should allow up to DM_MAX_{DEVICES,TARGETS} for devices/targets,
and not DM_MAX_{DEVICES,TARGETS} - 1.
Fix the checks and also fix the error message when the number of devices
is surpassed.
Fixes: 6bbc923dfcf57d ("dm: add support to directly boot to a mapped device")
Cc: stable@vger.kernel.org
Signed-off-by: Helen Koike <helen.koike@collabora.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/dm-init.c')
-rw-r--r-- | drivers/md/dm-init.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/md/dm-init.c b/drivers/md/dm-init.c index 4b76f84424c3..352e803f566e 100644 --- a/drivers/md/dm-init.c +++ b/drivers/md/dm-init.c @@ -160,7 +160,7 @@ static int __init dm_parse_table(struct dm_device *dev, char *str) while (table_entry) { DMDEBUG("parsing table \"%s\"", str); - if (++dev->dmi.target_count >= DM_MAX_TARGETS) { + if (++dev->dmi.target_count > DM_MAX_TARGETS) { DMERR("too many targets %u > %d", dev->dmi.target_count, DM_MAX_TARGETS); return -EINVAL; @@ -242,9 +242,9 @@ static int __init dm_parse_devices(struct list_head *devices, char *str) return -ENOMEM; list_add_tail(&dev->list, devices); - if (++ndev >= DM_MAX_DEVICES) { - DMERR("too many targets %u > %d", - dev->dmi.target_count, DM_MAX_TARGETS); + if (++ndev > DM_MAX_DEVICES) { + DMERR("too many devices %lu > %d", + ndev, DM_MAX_DEVICES); return -EINVAL; } |