projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'devel' of master.kernel.org:/home/rmk/linux-2.6-arm
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
s390
/
char
/
vmwatchdog.c
diff --git
a/drivers/s390/char/vmwatchdog.c
b/drivers/s390/char/vmwatchdog.c
index 56b3eab019cbddde76219ec3fb0bfa50406089aa..21a2a829bf4eb5baf20cfdfd9e71489c5987b77a 100644
(file)
--- a/
drivers/s390/char/vmwatchdog.c
+++ b/
drivers/s390/char/vmwatchdog.c
@@
-13,6
+13,7
@@
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/watchdog.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/watchdog.h>
+#include <linux/smp_lock.h>
#include <asm/ebcdic.h>
#include <asm/io.h>
#include <asm/ebcdic.h>
#include <asm/io.h>
@@
-121,11
+122,15
@@
static int __init vmwdt_probe(void)
static int vmwdt_open(struct inode *i, struct file *f)
{
int ret;
static int vmwdt_open(struct inode *i, struct file *f)
{
int ret;
- if (test_and_set_bit(0, &vmwdt_is_open))
+ lock_kernel();
+ if (test_and_set_bit(0, &vmwdt_is_open)) {
+ unlock_kernel();
return -EBUSY;
return -EBUSY;
+ }
ret = vmwdt_keepalive();
if (ret)
clear_bit(0, &vmwdt_is_open);
ret = vmwdt_keepalive();
if (ret)
clear_bit(0, &vmwdt_is_open);
+ unlock_kernel();
return ret ? ret : nonseekable_open(i, f);
}
return ret ? ret : nonseekable_open(i, f);
}