linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jiri Kosina <jikos@kernel.org>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Wim Osterholt <wim@djo.tudelft.nl>,
	linux-kernel@vger.kernel.org, gnomes@lxorguk.ukuu.org.uk
Subject: Re: disfunctional floppy driver in kernels 4.5, 4.6 and 4.7
Date: Wed, 15 Jun 2016 16:13:53 +0200 (CEST)	[thread overview]
Message-ID: <alpine.LNX.2.00.1606151610420.6874@cbobk.fhfr.pm> (raw)
In-Reply-To: <20160615132040.GZ14480@ZenIV.linux.org.uk>

On Wed, 15 Jun 2016, Al Viro wrote:

> ioctl-only open.  It's an old weird part of /dev/fd0 ABI 

Ah, right you are, I completely forgot about this gem.

> and if you are playing with that driver, 

I am merely trying to keep it in a state that doesn't crash the system.

> you'd better bother to check the actual userland talking to it.

Sure, this needs to be fixed.

Wim, could you please test whether the patch below, applied on top of 
vanilla kernel (i.e. drop the revert), everything you are using still 
works as expected?




From: Jiri Kosina <jkosina@suse.cz>
Subject: [PATCH] floppy: fix open(O_ACCMODE) for ioctl-only open

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.

Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
 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

  reply	other threads:[~2016-06-15 14:13 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-10 23:02 disfunctional floppy driver in kernels 4.5, 4.6 and 4.7 Wim Osterholt
2016-06-11 13:15 ` VFS regression ? " One Thousand Gnomes
2016-06-12  0:23   ` Wim Osterholt
2016-06-13 12:15 ` Jiri Kosina
2016-06-14 18:43   ` Wim Osterholt
2016-06-15  7:09     ` Jiri Kosina
2016-06-15 11:42       ` Wim Osterholt
2016-06-15 13:20       ` Al Viro
2016-06-15 14:13         ` Jiri Kosina [this message]
2016-06-15 22:47           ` Wim Osterholt
2016-06-16  7:53             ` [PATCH] floppy: fix open(O_ACCMODE) for ioctl-only open Jiri Kosina
2016-06-30 11:18               ` [PATCH RESEND] " Jiri Kosina
2016-07-25 18:09                 ` Wim Osterholt
2016-07-25 20:48                 ` Jens Axboe
2021-01-19 15:53                   ` Jiri Kosina
2021-01-21  4:44                     ` Denis Efremov
2021-01-21 10:25                       ` Jiri Kosina
2021-01-21 13:28                         ` [PATCH] floppy: reintroduce O_NDELAY fix kernel test robot
2021-01-21 14:44                         ` [PATCH RESEND] floppy: fix open(O_ACCMODE) for ioctl-only open Jiri Kosina
2021-01-21 15:02                           ` Denis Efremov
2021-01-21 15:05                             ` Jiri Kosina
2021-01-22 11:13                               ` [PATCH] floppy: reintroduce O_NDELAY fix Jiri Kosina
2021-01-26  8:21                                 ` Denis Efremov
2021-01-26  9:31                                   ` Kurt Garloff
2021-01-26  9:59                                     ` Denis Efremov
2021-02-04  9:24                                   ` Jiri Kosina
2021-02-04 10:18                                     ` Denis Efremov
2021-01-21 14:45                         ` [PATCH RESEND] floppy: fix open(O_ACCMODE) for ioctl-only open Denis Efremov
2016-06-15 23:07           ` disfunctional floppy driver in kernels 4.5, 4.6 and 4.7 Wim Osterholt
2016-06-15 23:12             ` Jiri Kosina
2016-06-15 23:13             ` Joe Perches
2016-06-14 19:09   ` Al Viro

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=alpine.LNX.2.00.1606151610420.6874@cbobk.fhfr.pm \
    --to=jikos@kernel.org \
    --cc=gnomes@lxorguk.ukuu.org.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=viro@ZenIV.linux.org.uk \
    --cc=wim@djo.tudelft.nl \
    /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;
as well as URLs for NNTP newsgroup(s).