From: Arnd Bergmann <arnd@arndb.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: Christoph Hellwig <hch@infradead.org>,
Sam Ravnborg <sam@ravnborg.org>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
John Kacur <jkacur@redhat.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
linux-scsi@vger.kernel.org
Subject: [PATCH] scsi/i2o: restore ioctl changes
Date: Thu, 8 Jul 2010 14:57:03 +0200 [thread overview]
Message-ID: <201007081457.03994.arnd@arndb.de> (raw)
In-Reply-To: <4C359200.8070105@kernel.dk>
This restores the changes from "scsi/i2o_block: cleanup ioctl
handling", which accidentally got reverted.
Origignal changelog:
This fixes the ioctl function of the i2o_block driver, which
has multiple problems:
* The BLKI2OSRSTRAT and BLKI2OSWSTRAT commands always return
-ENOTTY on success, where they should return 0.
* Support for 32 bit compat is missing
* The driver should use the .ioctl function and because
.locked_ioctl is going away.
The use of the big kernel lock remains for now, but gets
made explictit in the ioctl function.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
Jens, this is the commit that went missing due to my broken rebase.
Please either apply on top of you for-next branch or fold into
"block: push down BKL into .locked_ioctl", which reverted the change.
diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c
index a5bc3ee..e6733bc 100644
--- a/drivers/message/i2o/i2o_block.c
+++ b/drivers/message/i2o/i2o_block.c
@@ -657,30 +657,40 @@ static int i2o_block_ioctl(struct block_device *bdev, fmode_t mode,
{
struct gendisk *disk = bdev->bd_disk;
struct i2o_block_device *dev = disk->private_data;
+ int ret = -ENOTTY;
/* Anyone capable of this syscall can do *real bad* things */
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
+ lock_kernel();
switch (cmd) {
case BLKI2OGRSTRAT:
- return put_user(dev->rcache, (int __user *)arg);
+ ret = put_user(dev->rcache, (int __user *)arg);
+ break;
case BLKI2OGWSTRAT:
- return put_user(dev->wcache, (int __user *)arg);
+ ret = put_user(dev->wcache, (int __user *)arg);
+ break;
case BLKI2OSRSTRAT:
+ ret = -EINVAL;
if (arg < 0 || arg > CACHE_SMARTFETCH)
- return -EINVAL;
+ break;
dev->rcache = arg;
+ ret = 0;
break;
case BLKI2OSWSTRAT:
+ ret = -EINVAL;
if (arg != 0
&& (arg < CACHE_WRITETHROUGH || arg > CACHE_SMARTBACK))
- return -EINVAL;
+ break;
dev->wcache = arg;
+ ret = 0;
break;
}
- return -ENOTTY;
+ unlock_kernel();
+
+ return ret;
};
/**
@@ -936,6 +946,7 @@ static const struct block_device_operations i2o_block_fops = {
.open = i2o_block_open,
.release = i2o_block_release,
.ioctl = i2o_block_ioctl,
+ .compat_ioctl = i2o_block_ioctl,
.getgeo = i2o_block_getgeo,
.media_changed = i2o_block_media_changed
};
next prev parent reply other threads:[~2010-07-08 12:57 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-07 14:51 [PATCH 0/7] block: BKL removal, version 4 Arnd Bergmann
2010-07-07 14:51 ` [PATCH 1/7] scsi/i2o_block: cleanup ioctl handling Arnd Bergmann
2010-07-07 14:51 ` [PATCH 2/7] block: push down BKL into .locked_ioctl Arnd Bergmann
2010-07-08 8:36 ` Jens Axboe
2010-07-08 11:56 ` Arnd Bergmann
2010-07-07 14:51 ` [PATCH 3/7] block: push down BKL into .open and .release Arnd Bergmann
2010-07-08 8:41 ` Jens Axboe
2010-07-08 11:59 ` Arnd Bergmann
2010-07-07 14:51 ` [PATCH 4/7] block: push BKL into blktrace ioctls Arnd Bergmann
2010-07-07 14:51 ` [PATCH 5/7] block: remove BKL from BLKROSET and BLKFLSBUF Arnd Bergmann
2010-07-07 14:51 ` [PATCH 6/7] block: remove BKL from partition ioctls Arnd Bergmann
2010-07-07 14:51 ` [PATCH 7/7] scsi/sd: remove big kernel lock Arnd Bergmann
2010-07-07 16:44 ` [PATCH 0/7] block: BKL removal, version 4 Christoph Hellwig
2010-07-07 19:36 ` Jens Axboe
2010-07-07 20:18 ` Arnd Bergmann
2010-07-08 8:53 ` Jens Axboe
2010-07-08 12:57 ` Arnd Bergmann [this message]
2010-07-08 12:59 ` [PATCH] scsi/i2o: restore ioctl changes Jens Axboe
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=201007081457.03994.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=axboe@kernel.dk \
--cc=fweisbec@gmail.com \
--cc=hch@infradead.org \
--cc=jkacur@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=sam@ravnborg.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.