diff options
author | Kevin Wallace <k@igneous.io> | 2015-02-03 16:17:29 -0800 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2015-02-07 19:13:57 +0100 |
commit | 782ee2aa0e1646aebc96c8590ddc0a16405b8297 (patch) | |
tree | 8fd6b0c0a5ca7f1657d764b359f78dd0f1f25b9b | |
parent | a03195941b40f0d740f06d23648f672fe81d4ecf (diff) | |
download | busybox-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.c | 11 |
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); |