diff options
Diffstat (limited to 'drivers/block/floppy.c')
-rw-r--r-- | drivers/block/floppy.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index b71a9c767009..e3d8e4ced4a2 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c | |||
@@ -3706,22 +3706,21 @@ static int floppy_open(struct block_device *bdev, fmode_t mode) | |||
3706 | if (UFDCS->rawcmd == 1) | 3706 | if (UFDCS->rawcmd == 1) |
3707 | UFDCS->rawcmd = 2; | 3707 | UFDCS->rawcmd = 2; |
3708 | 3708 | ||
3709 | if (mode & (FMODE_READ|FMODE_WRITE)) { | 3709 | if (!(mode & FMODE_NDELAY)) { |
3710 | UDRS->last_checked = 0; | 3710 | if (mode & (FMODE_READ|FMODE_WRITE)) { |
3711 | clear_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags); | 3711 | UDRS->last_checked = 0; |
3712 | check_disk_change(bdev); | 3712 | clear_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags); |
3713 | if (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags)) | 3713 | check_disk_change(bdev); |
3714 | goto out; | 3714 | if (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags)) |
3715 | if (test_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags)) | 3715 | goto out; |
3716 | if (test_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags)) | ||
3717 | goto out; | ||
3718 | } | ||
3719 | res = -EROFS; | ||
3720 | if ((mode & FMODE_WRITE) && | ||
3721 | !test_bit(FD_DISK_WRITABLE_BIT, &UDRS->flags)) | ||
3716 | goto out; | 3722 | goto out; |
3717 | } | 3723 | } |
3718 | |||
3719 | res = -EROFS; | ||
3720 | |||
3721 | if ((mode & FMODE_WRITE) && | ||
3722 | !test_bit(FD_DISK_WRITABLE_BIT, &UDRS->flags)) | ||
3723 | goto out; | ||
3724 | |||
3725 | mutex_unlock(&open_lock); | 3724 | mutex_unlock(&open_lock); |
3726 | mutex_unlock(&floppy_mutex); | 3725 | mutex_unlock(&floppy_mutex); |
3727 | return 0; | 3726 | return 0; |