--- util-linux-ng-2.14.1/mount/lomount.c.CHANGE-FD 2008-10-17 17:09:58.000000000 +0200 +++ util-linux-ng-2.14.1/mount/lomount.c 2008-10-17 17:20:16.000000000 +0200 @@ -849,6 +849,10 @@ *loopro = (mode == O_RDONLY); if (ioctl(fd, LOOP_SET_FD, ffd) < 0) { + int saved_errno = errno; +#define LOOP_CHANGE_FD 0x4C06 + if (ioctl (fd, LOOP_CHANGE_FD, ffd) < 0) { + errno = saved_errno; if(errno == EBUSY) errRetVal = busyRetVal; if((errRetVal != 2) || verbose) @@ -860,6 +864,10 @@ close_ffd_return1: close (ffd); return errRetVal; + } + close (ffd); + close (fd); + return 0; } memset (&loopinfo, 0, sizeof (loopinfo));