aboutsummaryrefslogtreecommitdiff
path: root/util-linux/losetup.c
diff options
context:
space:
mode:
Diffstat (limited to 'util-linux/losetup.c')
-rw-r--r--util-linux/losetup.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/util-linux/losetup.c b/util-linux/losetup.c
index b52d693ec..5dc757074 100644
--- a/util-linux/losetup.c
+++ b/util-linux/losetup.c
@@ -114,8 +114,14 @@ int losetup_main(int argc UNUSED_PARAM, char **argv)
/* contains -f */
if (opt & OPT_f) {
char *s;
- int n = 0;
+ int n;
+ n = get_free_loop();
+ if (n == -1)
+ bb_error_msg_and_die("no free loop devices");
+ if (n < 0) /* n == -2: no /dev/loop-control, use legacy method */
+ n = 0;
+ /* or: n >= 0: the number of next free loopdev, just verify it */
do {
if (n > MAX_LOOP_NUM)
bb_error_msg_and_die("no free loop devices");