]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Sep 2021 09:50:46 +0000 (11:50 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Sep 2021 09:50:46 +0000 (11:50 +0200)
added patches:
revert-floppy-reintroduce-o_ndelay-fix.patch

queue-5.10/revert-floppy-reintroduce-o_ndelay-fix.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/revert-floppy-reintroduce-o_ndelay-fix.patch b/queue-5.10/revert-floppy-reintroduce-o_ndelay-fix.patch
new file mode 100644 (file)
index 0000000..8883f8b
--- /dev/null
@@ -0,0 +1,72 @@
+From c7e9d0020361f4308a70cdfd6d5335e273eb8717 Mon Sep 17 00:00:00 2001
+From: Denis Efremov <efremov@linux.com>
+Date: Sat, 7 Aug 2021 10:37:02 +0300
+Subject: Revert "floppy: reintroduce O_NDELAY fix"
+
+From: Denis Efremov <efremov@linux.com>
+
+commit c7e9d0020361f4308a70cdfd6d5335e273eb8717 upstream.
+
+The patch breaks userspace implementations (e.g. fdutils) and introduces
+regressions in behaviour. Previously, it was possible to O_NDELAY open a
+floppy device with no media inserted or with write protected media without
+an error. Some userspace tools use this particular behavior for probing.
+
+It's not the first time when we revert this patch. Previous revert is in
+commit f2791e7eadf4 (Revert "floppy: refactor open() flags handling").
+
+This reverts commit 8a0c014cd20516ade9654fc13b51345ec58e7be8.
+
+Link: https://lore.kernel.org/linux-block/de10cb47-34d1-5a88-7751-225ca380f735@compro.net/
+Reported-by: Mark Hounschell <markh@compro.net>
+Cc: Jiri Kosina <jkosina@suse.cz>
+Cc: Wim Osterholt <wim@djo.tudelft.nl>
+Cc: Kurt Garloff <kurt@garloff.de>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Denis Efremov <efremov@linux.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/block/floppy.c |   30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+--- a/drivers/block/floppy.c
++++ b/drivers/block/floppy.c
+@@ -4120,23 +4120,23 @@ static int floppy_open(struct block_devi
+       if (fdc_state[FDC(drive)].rawcmd == 1)
+               fdc_state[FDC(drive)].rawcmd = 2;
+-      if (mode & (FMODE_READ|FMODE_WRITE)) {
+-              drive_state[drive].last_checked = 0;
+-              clear_bit(FD_OPEN_SHOULD_FAIL_BIT, &drive_state[drive].flags);
+-              if (bdev_check_media_change(bdev))
+-                      floppy_revalidate(bdev->bd_disk);
+-              if (test_bit(FD_DISK_CHANGED_BIT, &drive_state[drive].flags))
+-                      goto out;
+-              if (test_bit(FD_OPEN_SHOULD_FAIL_BIT, &drive_state[drive].flags))
++      if (!(mode & FMODE_NDELAY)) {
++              if (mode & (FMODE_READ|FMODE_WRITE)) {
++                      drive_state[drive].last_checked = 0;
++                      clear_bit(FD_OPEN_SHOULD_FAIL_BIT,
++                                &drive_state[drive].flags);
++                      if (bdev_check_media_change(bdev))
++                              floppy_revalidate(bdev->bd_disk);
++                      if (test_bit(FD_DISK_CHANGED_BIT, &drive_state[drive].flags))
++                              goto out;
++                      if (test_bit(FD_OPEN_SHOULD_FAIL_BIT, &drive_state[drive].flags))
++                              goto out;
++              }
++              res = -EROFS;
++              if ((mode & FMODE_WRITE) &&
++                  !test_bit(FD_DISK_WRITABLE_BIT, &drive_state[drive].flags))
+                       goto out;
+       }
+-
+-      res = -EROFS;
+-
+-      if ((mode & FMODE_WRITE) &&
+-                      !test_bit(FD_DISK_WRITABLE_BIT, &drive_state[drive].flags))
+-              goto out;
+-
+       mutex_unlock(&open_lock);
+       mutex_unlock(&floppy_mutex);
+       return 0;
index 46ae0e15ed0f5a2176cb7c4cfe4ff834ecbfea6d..c2863f5b046257b2f131b13917f156f58d91116b 100644 (file)
@@ -97,3 +97,4 @@ lkdtm-enable-double_fault-on-all-architectures.patch
 arm64-dts-qcom-msm8994-angler-fix-gpio-reserved-ranges-85-88.patch
 btrfs-fix-null-pointer-dereference-when-deleting-device-by-invalid-id.patch
 kthread-fix-pf_kthread-vs-to_kthread-race.patch
+revert-floppy-reintroduce-o_ndelay-fix.patch