aboutsummaryrefslogtreecommitdiffstats
path: root/block/ioctl.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-11 22:14:22 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-11 22:14:22 -0400
commit1ce48904285fe4b0298864f9153a8502ebeac35c (patch)
treeffe1e0c31cdea427b48ae4d4d59a96ff9d208f32 /block/ioctl.c
parent55982fd184a065b1c69279d29cbc01dbf424d2f4 (diff)
parent780513ecb80ea0934fc6833efc4f5ed9ab4ff9bb (diff)
Merge branch 'block-2.6.24' of git://git.kernel.dk/data/git/linux-2.6-block
* 'block-2.6.24' of git://git.kernel.dk/data/git/linux-2.6-block: (37 commits) [BLOCK] Fix failing compile with BLK_DEV_IO_TRACE=n compat_ioctl: move floppy handlers to block/compat_ioctl.c compat_ioctl: move cdrom handlers to block/compat_ioctl.c compat_ioctl: move BLKPG handling to block/compat_ioctl.c compat_ioctl: move hdio calls to block/compat_ioctl.c compat_ioctl: handle blk_trace ioctls compat_ioctl: add compat_blkdev_driver_ioctl() compat_ioctl: move common block ioctls to compat_blkdev_ioctl Sysace: Don't enable IRQ until after interrupt handler is registered Sysace: sparse fixes Sysace: Minor coding convention fixup drivers/block/umem: use DRIVER_NAME where appropriate drivers/block/umem: trim trailing whitespace drivers/block/umem: minor cleanups drivers/block/umem: use dev_printk() drivers/block/umem: move private include away from include/linux Sysace: Labels in C code should not be indented. Sysace: Add of_platform_bus binding Sysace: Move IRQ handler registration to occur after FSM is initialized Sysace: minor rework and cleanup changes ...
Diffstat (limited to 'block/ioctl.c')
-rw-r--r--block/ioctl.c21
1 files changed, 4 insertions, 17 deletions
diff --git a/block/ioctl.c b/block/ioctl.c
index f7e3e8abf887..52d6385216ad 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -217,6 +217,10 @@ int blkdev_driver_ioctl(struct inode *inode, struct file *file,
217} 217}
218EXPORT_SYMBOL_GPL(blkdev_driver_ioctl); 218EXPORT_SYMBOL_GPL(blkdev_driver_ioctl);
219 219
220/*
221 * always keep this in sync with compat_blkdev_ioctl() and
222 * compat_blkdev_locked_ioctl()
223 */
220int blkdev_ioctl(struct inode *inode, struct file *file, unsigned cmd, 224int blkdev_ioctl(struct inode *inode, struct file *file, unsigned cmd,
221 unsigned long arg) 225 unsigned long arg)
222{ 226{
@@ -284,21 +288,4 @@ int blkdev_ioctl(struct inode *inode, struct file *file, unsigned cmd,
284 288
285 return blkdev_driver_ioctl(inode, file, disk, cmd, arg); 289 return blkdev_driver_ioctl(inode, file, disk, cmd, arg);
286} 290}
287
288/* Most of the generic ioctls are handled in the normal fallback path.
289 This assumes the blkdev's low level compat_ioctl always returns
290 ENOIOCTLCMD for unknown ioctls. */
291long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
292{
293 struct block_device *bdev = file->f_path.dentry->d_inode->i_bdev;
294 struct gendisk *disk = bdev->bd_disk;
295 int ret = -ENOIOCTLCMD;
296 if (disk->fops->compat_ioctl) {
297 lock_kernel();
298 ret = disk->fops->compat_ioctl(file, cmd, arg);
299 unlock_kernel();
300 }
301 return ret;
302}
303
304EXPORT_SYMBOL_GPL(blkdev_ioctl); 291EXPORT_SYMBOL_GPL(blkdev_ioctl);