aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Wallace <k@igneous.io>2015-02-03 16:17:29 -0800
committerDenys Vlasenko <vda.linux@googlemail.com>2015-02-07 19:13:57 +0100
commit782ee2aa0e1646aebc96c8590ddc0a16405b8297 (patch)
tree8fd6b0c0a5ca7f1657d764b359f78dd0f1f25b9b
parenta03195941b40f0d740f06d23648f672fe81d4ecf (diff)
downloadbusybox-w32-782ee2aa0e1646aebc96c8590ddc0a16405b8297.tar.gz
busybox-w32-782ee2aa0e1646aebc96c8590ddc0a16405b8297.tar.bz2
busybox-w32-782ee2aa0e1646aebc96c8590ddc0a16405b8297.zip
libbb/loop: don't try to re-use existing loop device
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@igneous.io> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--libbb/loop.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/libbb/loop.c b/libbb/loop.c
index c96c5e070..d30b378d7 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
154 else 154 else
155 ioctl(dfd, LOOP_CLR_FD, 0); 155 ioctl(dfd, LOOP_CLR_FD, 0);
156 } 156 }
157 157 } else {
158 /* If this block device already set up right, re-use it.
159 * (Yes this is racy, but associating two loop devices with the same
160 * file isn't pretty either. In general, mounting the same file twice
161 * without using losetup manually is problematic.)
162 */
163 } else
164 if (strcmp(file, (char *)loopinfo.lo_file_name) != 0
165 || offset != loopinfo.lo_offset
166 ) {
167 rc = -1; 158 rc = -1;
168 } 159 }
169 close(dfd); 160 close(dfd);