提交 4157fe0b 编写于 作者: C Christoph Hellwig 提交者: Jens Axboe

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: NChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210623145908.92973-5-hch@lst.deSigned-off-by: NJens Axboe <axboe@kernel.dk>
上级 d6da83d0
...@@ -2388,14 +2388,12 @@ static int loop_lookup(struct loop_device **l, int i) ...@@ -2388,14 +2388,12 @@ static int loop_lookup(struct loop_device **l, int i)
static void loop_probe(dev_t dev) static void loop_probe(dev_t dev)
{ {
int idx = MINOR(dev) >> part_shift; int idx = MINOR(dev) >> part_shift;
struct loop_device *lo;
if (max_loop && idx >= max_loop) if (max_loop && idx >= max_loop)
return; return;
mutex_lock(&loop_ctl_mutex); mutex_lock(&loop_ctl_mutex);
if (loop_lookup(&lo, idx) < 0) loop_add(idx);
loop_add(idx);
mutex_unlock(&loop_ctl_mutex); mutex_unlock(&loop_ctl_mutex);
} }
...@@ -2412,11 +2410,6 @@ static long loop_control_ioctl(struct file *file, unsigned int cmd, ...@@ -2412,11 +2410,6 @@ static long loop_control_ioctl(struct file *file, unsigned int cmd,
ret = -ENOSYS; ret = -ENOSYS;
switch (cmd) { switch (cmd) {
case LOOP_CTL_ADD: case LOOP_CTL_ADD:
ret = loop_lookup(&lo, parm);
if (ret >= 0) {
ret = -EEXIST;
break;
}
ret = loop_add(parm); ret = loop_add(parm);
break; break;
case LOOP_CTL_REMOVE: case LOOP_CTL_REMOVE:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册