From 6145a3d3d633c1f6fe9fdcc5c8df4db83e4e1f6f Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 1 Sep 2021 12:26:15 +0200 Subject: [PATCH] 4.14-stable patches added patches: revert-floppy-reintroduce-o_ndelay-fix.patch --- ...vert-floppy-reintroduce-o_ndelay-fix.patch | 69 +++++++++++++++++++ queue-4.14/series | 1 + 2 files changed, 70 insertions(+) create mode 100644 queue-4.14/revert-floppy-reintroduce-o_ndelay-fix.patch diff --git a/queue-4.14/revert-floppy-reintroduce-o_ndelay-fix.patch b/queue-4.14/revert-floppy-reintroduce-o_ndelay-fix.patch new file mode 100644 index 00000000000..7212f68b305 --- /dev/null +++ b/queue-4.14/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 +@@ -4069,22 +4069,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.14/series b/queue-4.14/series index d16840aed2b..2166e8faa36 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -24,3 +24,4 @@ bpf-do-not-use-ax-register-in-interpreter-on-div-mod.patch bpf-fix-subprog-verifier-bypass-by-div-mod-by-0-exception.patch bpf-fix-32-bit-src-register-truncation-on-div-mod.patch bpf-fix-truncation-handling-for-mod32-dst-reg-wrt-zero.patch +revert-floppy-reintroduce-o_ndelay-fix.patch -- 2.47.3