[PATCH] fix floppy.c to store correct ro/rw status in underlying gendisk
Evgeny Stambulchik found that doing the following always worked: # mount /dev/fd0 /mnt/floppy/ mount: block device /dev/fd0 is write-protected, mounting read-only # mount -o remount,rw /mnt/floppy # echo $? 0 This is the case because the block device /dev/fd0 is writeable but the floppy disk is marked protected. A fix is to simply have floppy_open mark the underlying gendisk policy according to reality (since the VFS doesn't provide a way for do_remount_sb to inquire as to the current device status). Signed-off-by: Jon Masters <jcm@jonmasters.org> Cc: Al Viro <viro@ftp.linux.org.uk> Cc: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
4448aaf0fa
commit
88baf3e85a
1 changed files with 6 additions and 0 deletions
|
@ -3714,6 +3714,12 @@ static int floppy_open(struct inode *inode, struct file *filp)
|
|||
USETF(FD_VERIFY);
|
||||
}
|
||||
|
||||
/* set underlying gendisk policy to reflect real ro/rw status */
|
||||
if (UTESTF(FD_DISK_WRITABLE))
|
||||
inode->i_bdev->bd_disk->policy = 0;
|
||||
else
|
||||
inode->i_bdev->bd_disk->policy = 1;
|
||||
|
||||
if (UDRS->fd_ref == -1 || (UDRS->fd_ref && (filp->f_flags & O_EXCL)))
|
||||
goto out2;
|
||||
|
||||
|
|
Loading…
Reference in a new issue