Signed-off-by: Michael S. Tsirkin <[EMAIL PROTECTED]> Make unlocked_ioctl and compat_ioctl behave symmetrically - check them first thing, and always require returning ENOIOCTLCMD on error from unlocked_ioctl, same as we do for compat_ioctl. This also makes it possible to override *all* ioctl commands, and hopefully may enable some speed ups on the data path.
diff -rup linux-2.6.10-orig/fs/ioctl.c linux-2.6.10-ioctl-sym/fs/ioctl.c --- linux-2.6.10-orig/fs/ioctl.c 2005-01-18 10:58:33.609880024 +0200 +++ linux-2.6.10-ioctl-sym/fs/ioctl.c 2005-01-18 10:51:55.690372984 +0200 @@ -24,12 +24,7 @@ static long do_ioctl(struct file *filp, if (!filp->f_op) goto out; - if (filp->f_op->unlocked_ioctl) { - error = filp->f_op->unlocked_ioctl(filp, cmd, arg); - if (error == -ENOIOCTLCMD) - error = -EINVAL; - goto out; - } else if (filp->f_op->ioctl) { + if (filp->f_op->ioctl) { lock_kernel(); error = filp->f_op->ioctl(filp->f_dentry->d_inode, filp, cmd, arg); @@ -93,6 +91,12 @@ asmlinkage long sys_ioctl(unsigned int f if (error) goto out_fput; + if (filp->f_op && filp->f_op->unlocked_ioctl) { + error = filp->f_op->unlocked_ioctl(filp, cmd, arg); + if (error != -ENOIOCTLCMD) + goto out_fput; + } + switch (cmd) { case FIOCLEX: set_close_on_exec(fd, 1); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/