[git commit] libbb/loop: don't try to re-use existing loop device

Denys Vlasenko vda.linux at googlemail.com
Sat Feb 7 18:13:57 UTC 2015


commit: http://git.busybox.net/busybox/commit/?id=782ee2aa0e1646aebc96c8590ddc0a16405b8297
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

loopinfo.lo_file_name is not enough to uniquely identify a file on a system with
multiple mount namespaces.  We could conceivably change this to dedup on
(lo_rdevice, lo_inode), but, as the comment above the deleted code notes, this
whole approach of reusing devices is racy anyway, so it seems better to stop
doing it entirely.

Signed-off-by: Kevin Wallace <k at igneous.io>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 libbb/loop.c |   11 +----------
 1 files changed, 1 insertions(+), 10 deletions(-)

diff --git a/libbb/loop.c b/libbb/loop.c
index c96c5e0..d30b378 100644
--- a/libbb/loop.c
+++ b/libbb/loop.c
@@ -154,16 +154,7 @@ int FAST_FUNC set_loop(char **device, const char *file, unsigned long long offse
 				else
 					ioctl(dfd, LOOP_CLR_FD, 0);
 			}
-
-		/* If this block device already set up right, re-use it.
-		 * (Yes this is racy, but associating two loop devices with the same
-		 * file isn't pretty either.  In general, mounting the same file twice
-		 * without using losetup manually is problematic.)
-		 */
-		} else
-		if (strcmp(file, (char *)loopinfo.lo_file_name) != 0
-		 || offset != loopinfo.lo_offset
-		) {
+		} else {
 			rc = -1;
 		}
 		close(dfd);


More information about the busybox-cvs mailing list