aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2008-05-20 13:16:43 -0400
committerJonathan Corbet <corbet@lwn.net>2008-07-02 17:06:25 -0400
commit9edca64b724db74373f0c9ef7cb044a5f221a4a3 (patch)
tree6330529f51351ca95002189fdf63283930e9f91a /drivers/input
parent556e4b0b69d6e45e6b4e61390ef5aebce3ea432d (diff)
serio: BKL pushdown
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/serio/serio_raw.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/input/serio/serio_raw.c b/drivers/input/serio/serio_raw.c
index 0403622ae267..c9397c8ee97e 100644
--- a/drivers/input/serio/serio_raw.c
+++ b/drivers/input/serio/serio_raw.c
@@ -10,6 +10,7 @@
10 */ 10 */
11 11
12#include <linux/slab.h> 12#include <linux/slab.h>
13#include <linux/smp_lock.h>
13#include <linux/poll.h> 14#include <linux/poll.h>
14#include <linux/module.h> 15#include <linux/module.h>
15#include <linux/serio.h> 16#include <linux/serio.h>
@@ -81,9 +82,10 @@ static int serio_raw_open(struct inode *inode, struct file *file)
81 struct serio_raw_list *list; 82 struct serio_raw_list *list;
82 int retval = 0; 83 int retval = 0;
83 84
85 lock_kernel();
84 retval = mutex_lock_interruptible(&serio_raw_mutex); 86 retval = mutex_lock_interruptible(&serio_raw_mutex);
85 if (retval) 87 if (retval)
86 return retval; 88 goto out_bkl;
87 89
88 if (!(serio_raw = serio_raw_locate(iminor(inode)))) { 90 if (!(serio_raw = serio_raw_locate(iminor(inode)))) {
89 retval = -ENODEV; 91 retval = -ENODEV;
@@ -108,6 +110,8 @@ static int serio_raw_open(struct inode *inode, struct file *file)
108 110
109out: 111out:
110 mutex_unlock(&serio_raw_mutex); 112 mutex_unlock(&serio_raw_mutex);
113out_bkl:
114 unlock_kernel();
111 return retval; 115 return retval;
112} 116}
113 117