forked from Minki/linux
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: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20210623145908.92973-5-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
d6da83d072
commit
4157fe0b3d
@ -2388,14 +2388,12 @@ out:
|
||||
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);
|
||||
}
|
||||
|
||||
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user