loop_add returns the right error if the slot wasn't available. Signed-off-by: Christoph Hellwig <hch@xxxxxx> --- drivers/block/loop.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 8392722d0e12..b1e7e420563b 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c @@ -2219,14 +2219,12 @@ static int loop_lookup(struct loop_device **l, int i) static void loop_probe(dev_t dev) { int idx = MINOR(dev) >> part_shift; - struct loop_device *lo; if (max_loop && idx >= max_loop) return; mutex_lock(&loop_ctl_mutex); - if (loop_lookup(&lo, idx) < 0) - loop_add(idx); + loop_add(idx); mutex_unlock(&loop_ctl_mutex); } @@ -2243,11 +2241,6 @@ static long loop_control_ioctl(struct file *file, unsigned int cmd, ret = -ENOSYS; switch (cmd) { case LOOP_CTL_ADD: - ret = loop_lookup(&lo, parm); - if (ret >= 0) { - ret = -EEXIST; - break; - } ret = loop_add(parm); break; case LOOP_CTL_REMOVE: -- 2.30.2