diff options
author | Arnd Bergmann <arnd@arndb.de> | 2008-05-20 19:15:50 +0200 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2008-06-20 14:05:56 -0600 |
commit | 080c2226474fa3060fadce9a2341004f477aadb3 (patch) | |
tree | 78576a4f248944bb58e25893a7dec3c63029a94b /drivers/char/ds1620.c | |
parent | 7ccef46320ecd52c4d20c8aad592599df76bb7a1 (diff) | |
download | lwn-080c2226474fa3060fadce9a2341004f477aadb3.tar.gz lwn-080c2226474fa3060fadce9a2341004f477aadb3.zip |
ds1620: BKL pushdown
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers/char/ds1620.c')
-rw-r--r-- | drivers/char/ds1620.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/char/ds1620.c b/drivers/char/ds1620.c index 334ad5bbe6b6..34275c6f1da2 100644 --- a/drivers/char/ds1620.c +++ b/drivers/char/ds1620.c @@ -8,6 +8,7 @@ #include <linux/proc_fs.h> #include <linux/capability.h> #include <linux/init.h> +#include <linux/smp_lock.h> #include <asm/hardware.h> #include <asm/mach-types.h> @@ -208,6 +209,12 @@ static void ds1620_read_state(struct therm *therm) therm->hi = cvt_9_to_int(ds1620_in(THERM_READ_TH, 9)); } +static int ds1620_open(struct inode *inode, struct file *file) +{ + cycle_kernel_lock(); + return nonseekable_open(inode, file); +} + static ssize_t ds1620_read(struct file *file, char __user *buf, size_t count, loff_t *ptr) { @@ -336,7 +343,7 @@ static struct proc_dir_entry *proc_therm_ds1620; static const struct file_operations ds1620_fops = { .owner = THIS_MODULE, - .open = nonseekable_open, + .open = ds1620_open, .read = ds1620_read, .ioctl = ds1620_ioctl, }; |