From: Stanislav Brabec Date: Tue, 27 May 2014 18:38:10 +0000 (+0200) Subject: losetup: don't clear FD at EBUSY error in loopcxt_setup_device() X-Git-Tag: v2.25-rc1~83 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f7e21185087c30c5f13bf92009238e316f8c1cf4;p=thirdparty%2Futil-linux.git losetup: don't clear FD at EBUSY error in loopcxt_setup_device() loopback lib clears the existing FD unconditionally at error in loopcxt_setup_device(). This is done even after EBUSY, thus the second call actually clears the previous setup wrongly. Author: Takashi Iwai Signed-off-by: Stanislav Brabec --- diff --git a/lib/loopdev.c b/lib/loopdev.c index 1fbb000c42..988f3d337a 100644 --- a/lib/loopdev.c +++ b/lib/loopdev.c @@ -1294,7 +1294,7 @@ int loopcxt_setup_device(struct loopdev_cxt *lc) err: if (file_fd >= 0) close(file_fd); - if (dev_fd >= 0) + if (dev_fd >= 0 && rc != -EBUSY) ioctl(dev_fd, LOOP_CLR_FD, 0); DBG(lc, loopdev_debug("setup failed [rc=%d]", rc));