]> git.hungrycats.org Git - linux/commitdiff
Revert "floppy: refactor open() flags handling"
authorJens Axboe <axboe@fb.com>
Thu, 25 Aug 2016 14:56:51 +0000 (08:56 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Sep 2016 06:20:25 +0000 (08:20 +0200)
commit f2791e7eadf437633f30faa51b30878cf15650be upstream.

This reverts commit 09954bad448791ef01202351d437abdd9497a804.

Cc: Mark Hounschell <markh@compro.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/block/floppy.c

index 84708a5f8c520cb86db4ad62a4b845a5ec83b88f..b206115d761cb5bf5390386317e6b16ebe15b6d9 100644 (file)
@@ -3663,11 +3663,6 @@ static int floppy_open(struct block_device *bdev, fmode_t mode)
 
        opened_bdev[drive] = bdev;
 
-       if (!(mode & (FMODE_READ|FMODE_WRITE))) {
-               res = -EINVAL;
-               goto out;
-       }
-
        res = -ENXIO;
 
        if (!floppy_track_buffer) {
@@ -3711,20 +3706,21 @@ static int floppy_open(struct block_device *bdev, fmode_t mode)
        if (UFDCS->rawcmd == 1)
                UFDCS->rawcmd = 2;
 
-       UDRS->last_checked = 0;
-       clear_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags);
-       check_disk_change(bdev);
-       if (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags))
-               goto out;
-       if (test_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags))
-               goto out;
-
-       res = -EROFS;
-
-       if ((mode & FMODE_WRITE) &&
-                       !test_bit(FD_DISK_WRITABLE_BIT, &UDRS->flags))
-               goto out;
-
+       if (!(mode & FMODE_NDELAY)) {
+               if (mode & (FMODE_READ|FMODE_WRITE)) {
+                       UDRS->last_checked = 0;
+                       clear_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags);
+                       check_disk_change(bdev);
+                       if (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags))
+                               goto out;
+                       if (test_bit(FD_OPEN_SHOULD_FAIL_BIT, &UDRS->flags))
+                               goto out;
+               }
+               res = -EROFS;
+               if ((mode & FMODE_WRITE) &&
+                   !test_bit(FD_DISK_WRITABLE_BIT, &UDRS->flags))
+                       goto out;
+       }
        mutex_unlock(&open_lock);
        mutex_unlock(&floppy_mutex);
        return 0;