From: Greg Kroah-Hartman Date: Wed, 1 Sep 2021 10:21:43 +0000 (+0200) Subject: 4.4-stable patches X-Git-Tag: v4.4.283~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d43af8f518c70b1067866bb109257405e1200343;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: revert-floppy-reintroduce-o_ndelay-fix.patch --- diff --git a/queue-4.4/revert-floppy-reintroduce-o_ndelay-fix.patch b/queue-4.4/revert-floppy-reintroduce-o_ndelay-fix.patch new file mode 100644 index 00000000000..0a84ecba05f --- /dev/null +++ b/queue-4.4/revert-floppy-reintroduce-o_ndelay-fix.patch @@ -0,0 +1,69 @@ +From c7e9d0020361f4308a70cdfd6d5335e273eb8717 Mon Sep 17 00:00:00 2001 +From: Denis Efremov +Date: Sat, 7 Aug 2021 10:37:02 +0300 +Subject: Revert "floppy: reintroduce O_NDELAY fix" + +From: Denis Efremov + +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 +Cc: Jiri Kosina +Cc: Wim Osterholt +Cc: Kurt Garloff +Cc: +Signed-off-by: Denis Efremov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/block/floppy.c | 27 +++++++++++++-------------- + 1 file changed, 13 insertions(+), 14 deletions(-) + +--- a/drivers/block/floppy.c ++++ b/drivers/block/floppy.c +@@ -4066,22 +4066,21 @@ static int floppy_open(struct block_devi + if (UFDCS->rawcmd == 1) + UFDCS->rawcmd = 2; + +- 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)) ++ 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; + } +- +- 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; diff --git a/queue-4.4/series b/queue-4.4/series index 16c1ae70f27..a3b82905f07 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -7,3 +7,4 @@ virtio-improve-vq-broken-access-to-avoid-any-compile.patch vringh-use-wiov-used-to-check-for-read-write-desc-or.patch vt_kdsetmode-extend-console-locking.patch fbmem-add-margin-check-to-fb_check_caps.patch +revert-floppy-reintroduce-o_ndelay-fix.patch