Commit 4157fe0b authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

loop: don't call loop_lookup before adding a loop device



loop_add returns the right error if the slot wasn't available.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210623145908.92973-5-hch@lst.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent d6da83d0
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -2388,13 +2388,11 @@ 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);
	mutex_unlock(&loop_ctl_mutex);
}
@@ -2412,11 +2410,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: