From: Mark Hounschell <markh@compro.net>
To: Linux-kernel <linux-kernel@vger.kernel.org>
Cc: Jiri Kosina <jkosina@suse.cz>
Subject: Resend: Another 4.4 to 4.5 floppy issue
Date: Tue, 5 Jul 2016 16:28:06 -0400 [thread overview]
Message-ID: <577C1856.4010607@compro.net> (raw)
Just rejoined the list due to floppy open problems created from 4.4 to
4.5. I found the following email that indicates a fix for one of the
problems.
From: Jiri Kosina <jkosina@suse.cz>
Commit 09954bad4 ("floppy: refactor open() flags handling"), as a
side-effect, causes open(/dev/fdX, O_ACCMODE) to fail. It turns out that
this is being used setfdprm userspace for ioctl-only open().
Reintroduce back the original behavior wrt !(FMODE_READ|FMODE_WRITE)
modes, while still keeping the original O_NDELAY bug fixed.
Cc: stable@vger.kernel.org # v4.5+
Reported-by: Wim Osterholt <wim@djo.tudelft.nl>
Tested-by: Wim Osterholt <wim@djo.tudelft.nl>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
Jens, this should preferably go into 4.7-rcX and to -stable as well.
drivers/block/floppy.c | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index 84708a5..a1dcf12 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -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,13 +3706,15 @@ 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;
+ 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;
--
Jiri Kosina
SUSE Labs
But this does not completely fix all the problems induced by the
original changes from 4.4 to 4.5. The following is what we use to open
the floppy.
fd = open(device, O_RDWR | O_NDELAY);
The FMODE_NDELAY check that was removed now prevents one from doing an
open of the device with no media inserted. It also prevents one from
doing an open of the device with media inserted that is not already
formatted in a "standard" format. I do both of these things a lot. I
deal with a few very non-standard formats and this change prevents me
from doing what I've been doing for YEARS. Could we please get the
original behavior back in the floppy driver.
Thanks and regards
Mark
next reply other threads:[~2016-07-05 20:28 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-05 20:28 Mark Hounschell [this message]
2016-07-11 15:36 ` Resend: Another 4.4 to 4.5 floppy issue Jiri Kosina
2016-07-11 17:05 ` Mark Hounschell
2016-07-12 8:54 ` Jiri Kosina
2016-07-13 12:14 ` Mark Hounschell
2016-08-02 9:44 ` Jiri Kosina
2016-08-03 14:20 ` Mark Hounschell
2016-08-11 13:24 ` Jiri Kosina
2016-08-11 17:38 ` Mark Hounschell
2016-08-12 9:37 ` Jiri Kosina
2016-08-12 11:59 ` Mark Hounschell
2016-08-12 12:09 ` Jiri Kosina
2016-08-23 17:01 ` Mark Hounschell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=577C1856.4010607@compro.net \
--to=markh@compro.net \
--cc=jkosina@suse.cz \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox