diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-13 20:52:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-13 20:52:35 -0400 |
commit | 10041d2d14688e207d0d829095147aa82c1f211b (patch) | |
tree | 57ef361d05e6bbffe3ec490ca9110878a6e969e2 /fs/ioctl.c | |
parent | 4914c7f881845367b9198631a014ab466329b9e5 (diff) | |
parent | b19dd42faf413b4705d4adb38521e82d73fa4249 (diff) |
Merge branch 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing
* 'bkl/ioctl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:
bkl: Remove locked .ioctl file operation
v4l: Remove reference to bkl ioctl in compat ioctl handling
logfs: kill BKL
Diffstat (limited to 'fs/ioctl.c')
-rw-r--r-- | fs/ioctl.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/fs/ioctl.c b/fs/ioctl.c index 2d140a713861..f855ea4fc888 100644 --- a/fs/ioctl.c +++ b/fs/ioctl.c | |||
@@ -29,7 +29,6 @@ | |||
29 | * @arg: command-specific argument for ioctl | 29 | * @arg: command-specific argument for ioctl |
30 | * | 30 | * |
31 | * Invokes filesystem specific ->unlocked_ioctl, if one exists; otherwise | 31 | * Invokes filesystem specific ->unlocked_ioctl, if one exists; otherwise |
32 | * invokes filesystem specific ->ioctl method. If neither method exists, | ||
33 | * returns -ENOTTY. | 32 | * returns -ENOTTY. |
34 | * | 33 | * |
35 | * Returns 0 on success, -errno on error. | 34 | * Returns 0 on success, -errno on error. |
@@ -39,21 +38,12 @@ static long vfs_ioctl(struct file *filp, unsigned int cmd, | |||
39 | { | 38 | { |
40 | int error = -ENOTTY; | 39 | int error = -ENOTTY; |
41 | 40 | ||
42 | if (!filp->f_op) | 41 | if (!filp->f_op || !filp->f_op->unlocked_ioctl) |
43 | goto out; | 42 | goto out; |
44 | 43 | ||
45 | if (filp->f_op->unlocked_ioctl) { | 44 | error = filp->f_op->unlocked_ioctl(filp, cmd, arg); |
46 | error = filp->f_op->unlocked_ioctl(filp, cmd, arg); | 45 | if (error == -ENOIOCTLCMD) |
47 | if (error == -ENOIOCTLCMD) | 46 | error = -EINVAL; |
48 | error = -EINVAL; | ||
49 | goto out; | ||
50 | } else if (filp->f_op->ioctl) { | ||
51 | lock_kernel(); | ||
52 | error = filp->f_op->ioctl(filp->f_path.dentry->d_inode, | ||
53 | filp, cmd, arg); | ||
54 | unlock_kernel(); | ||
55 | } | ||
56 | |||
57 | out: | 47 | out: |
58 | return error; | 48 | return error; |
59 | } | 49 | } |