From bc7b0cbe156da639f0cbe17bf89725d87e86512a Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Sun, 16 Nov 2008 13:25:10 +0000 Subject: [PATCH] Open file and loop device with O_RDONLY when -o loop,ro. Otherwise: ioctl LOOP_SET_FD failed: Bad file number. --- toolbox/mount.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/toolbox/mount.c b/toolbox/mount.c index ef13e1fd5..395c9433a 100644 --- a/toolbox/mount.c +++ b/toolbox/mount.c @@ -138,14 +138,17 @@ do_mount(char *dev, char *dir, char *type, unsigned long rwflag, void *data, int if (loop) { int file_fd, device_fd; + int flags; + + flags = (rwflag & MS_RDONLY) ? O_RDONLY : O_RDWR; // FIXME - only one loop mount supported at a time - file_fd = open(dev, O_RDWR); + file_fd = open(dev, flags); if (file_fd < -1) { perror("open backing file failed"); return 1; } - device_fd = open(LOOP_DEVICE, O_RDWR); + device_fd = open(LOOP_DEVICE, flags); if (device_fd < -1) { perror("open loop device failed"); close(file_fd);