diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-24 11:01:10 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-24 11:01:10 -0400 |
| commit | f13771187b9423b824f32518319f6da85d819003 (patch) | |
| tree | c431cf16c286065a302d5f3fb43fc1abac7e4047 /net | |
| parent | 15953654cc312429740fd58fb37a5a3d63a54376 (diff) | |
| parent | 9f37af654fda88a8dcca74c785f6c20e52758866 (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:
uml: Pushdown the bkl from harddog_kern ioctl
sunrpc: Pushdown the bkl from sunrpc cache ioctl
sunrpc: Pushdown the bkl from ioctl
autofs4: Pushdown the bkl from ioctl
uml: Convert to unlocked_ioctls to remove implicit BKL
ncpfs: BKL ioctl pushdown
coda: Clean-up whitespace problems in pioctl.c
coda: BKL ioctl pushdown
drivers: Push down BKL into various drivers
isdn: Push down BKL into ioctl functions
scsi: Push down BKL into ioctl functions
dvb: Push down BKL into ioctl functions
smbfs: Push down BKL into ioctl function
coda/psdev: Remove BKL from ioctl function
um/mmapper: Remove BKL usage
sn_hwperf: Kill BKL usage
hfsplus: Push down BKL into ioctl function
Diffstat (limited to 'net')
| -rw-r--r-- | net/sunrpc/cache.c | 13 | ||||
| -rw-r--r-- | net/sunrpc/rpc_pipe.c | 18 |
2 files changed, 25 insertions, 6 deletions
diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c index c2173ebdb33c..58de76c8540c 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c | |||
| @@ -34,6 +34,7 @@ | |||
| 34 | #include <linux/sunrpc/cache.h> | 34 | #include <linux/sunrpc/cache.h> |
| 35 | #include <linux/sunrpc/stats.h> | 35 | #include <linux/sunrpc/stats.h> |
| 36 | #include <linux/sunrpc/rpc_pipe_fs.h> | 36 | #include <linux/sunrpc/rpc_pipe_fs.h> |
| 37 | #include <linux/smp_lock.h> | ||
| 37 | 38 | ||
| 38 | #define RPCDBG_FACILITY RPCDBG_CACHE | 39 | #define RPCDBG_FACILITY RPCDBG_CACHE |
| 39 | 40 | ||
| @@ -1545,12 +1546,18 @@ static unsigned int cache_poll_pipefs(struct file *filp, poll_table *wait) | |||
| 1545 | return cache_poll(filp, wait, cd); | 1546 | return cache_poll(filp, wait, cd); |
| 1546 | } | 1547 | } |
| 1547 | 1548 | ||
| 1548 | static int cache_ioctl_pipefs(struct inode *inode, struct file *filp, | 1549 | static long cache_ioctl_pipefs(struct file *filp, |
| 1549 | unsigned int cmd, unsigned long arg) | 1550 | unsigned int cmd, unsigned long arg) |
| 1550 | { | 1551 | { |
| 1552 | struct inode *inode = filp->f_dentry->d_inode; | ||
| 1551 | struct cache_detail *cd = RPC_I(inode)->private; | 1553 | struct cache_detail *cd = RPC_I(inode)->private; |
| 1554 | long ret; | ||
| 1552 | 1555 | ||
| 1553 | return cache_ioctl(inode, filp, cmd, arg, cd); | 1556 | lock_kernel(); |
| 1557 | ret = cache_ioctl(inode, filp, cmd, arg, cd); | ||
| 1558 | unlock_kernel(); | ||
| 1559 | |||
| 1560 | return ret; | ||
| 1554 | } | 1561 | } |
| 1555 | 1562 | ||
| 1556 | static int cache_open_pipefs(struct inode *inode, struct file *filp) | 1563 | static int cache_open_pipefs(struct inode *inode, struct file *filp) |
| @@ -1573,7 +1580,7 @@ const struct file_operations cache_file_operations_pipefs = { | |||
| 1573 | .read = cache_read_pipefs, | 1580 | .read = cache_read_pipefs, |
| 1574 | .write = cache_write_pipefs, | 1581 | .write = cache_write_pipefs, |
| 1575 | .poll = cache_poll_pipefs, | 1582 | .poll = cache_poll_pipefs, |
| 1576 | .ioctl = cache_ioctl_pipefs, /* for FIONREAD */ | 1583 | .unlocked_ioctl = cache_ioctl_pipefs, /* for FIONREAD */ |
| 1577 | .open = cache_open_pipefs, | 1584 | .open = cache_open_pipefs, |
| 1578 | .release = cache_release_pipefs, | 1585 | .release = cache_release_pipefs, |
| 1579 | }; | 1586 | }; |
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 20e30c6f8355..95ccbcf45d3e 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #include <linux/workqueue.h> | 27 | #include <linux/workqueue.h> |
| 28 | #include <linux/sunrpc/rpc_pipe_fs.h> | 28 | #include <linux/sunrpc/rpc_pipe_fs.h> |
| 29 | #include <linux/sunrpc/cache.h> | 29 | #include <linux/sunrpc/cache.h> |
| 30 | #include <linux/smp_lock.h> | ||
| 30 | 31 | ||
| 31 | static struct vfsmount *rpc_mount __read_mostly; | 32 | static struct vfsmount *rpc_mount __read_mostly; |
| 32 | static int rpc_mount_count; | 33 | static int rpc_mount_count; |
| @@ -309,8 +310,7 @@ rpc_pipe_poll(struct file *filp, struct poll_table_struct *wait) | |||
| 309 | } | 310 | } |
| 310 | 311 | ||
| 311 | static int | 312 | static int |
| 312 | rpc_pipe_ioctl(struct inode *ino, struct file *filp, | 313 | rpc_pipe_ioctl_unlocked(struct file *filp, unsigned int cmd, unsigned long arg) |
| 313 | unsigned int cmd, unsigned long arg) | ||
| 314 | { | 314 | { |
| 315 | struct rpc_inode *rpci = RPC_I(filp->f_path.dentry->d_inode); | 315 | struct rpc_inode *rpci = RPC_I(filp->f_path.dentry->d_inode); |
| 316 | int len; | 316 | int len; |
| @@ -331,13 +331,25 @@ rpc_pipe_ioctl(struct inode *ino, struct file *filp, | |||
| 331 | } | 331 | } |
| 332 | } | 332 | } |
| 333 | 333 | ||
| 334 | static long | ||
| 335 | rpc_pipe_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | ||
| 336 | { | ||
| 337 | long ret; | ||
| 338 | |||
| 339 | lock_kernel(); | ||
| 340 | ret = rpc_pipe_ioctl_unlocked(filp, cmd, arg); | ||
| 341 | unlock_kernel(); | ||
| 342 | |||
| 343 | return ret; | ||
| 344 | } | ||
| 345 | |||
| 334 | static const struct file_operations rpc_pipe_fops = { | 346 | static const struct file_operations rpc_pipe_fops = { |
| 335 | .owner = THIS_MODULE, | 347 | .owner = THIS_MODULE, |
| 336 | .llseek = no_llseek, | 348 | .llseek = no_llseek, |
| 337 | .read = rpc_pipe_read, | 349 | .read = rpc_pipe_read, |
| 338 | .write = rpc_pipe_write, | 350 | .write = rpc_pipe_write, |
| 339 | .poll = rpc_pipe_poll, | 351 | .poll = rpc_pipe_poll, |
| 340 | .ioctl = rpc_pipe_ioctl, | 352 | .unlocked_ioctl = rpc_pipe_ioctl, |
| 341 | .open = rpc_pipe_open, | 353 | .open = rpc_pipe_open, |
| 342 | .release = rpc_pipe_release, | 354 | .release = rpc_pipe_release, |
| 343 | }; | 355 | }; |
