projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'timers/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[cascardo/linux.git]
/
arch
/
sh
/
boards
/
landisk
/
gio.c
diff --git
a/arch/sh/boards/landisk/gio.c
b/arch/sh/boards/landisk/gio.c
index
50d38be
..
0c15b0a
100644
(file)
--- a/
arch/sh/boards/landisk/gio.c
+++ b/
arch/sh/boards/landisk/gio.c
@@
-14,6
+14,7
@@
*/
#include <linux/module.h>
#include <linux/init.h>
*/
#include <linux/module.h>
#include <linux/init.h>
+#include <linux/smp_lock.h>
#include <linux/kdev_t.h>
#include <linux/cdev.h>
#include <linux/fs.h>
#include <linux/kdev_t.h>
#include <linux/cdev.h>
#include <linux/fs.h>
@@
-32,17
+33,20
@@
static int openCnt;
static int gio_open(struct inode *inode, struct file *filp)
{
int minor;
static int gio_open(struct inode *inode, struct file *filp)
{
int minor;
+ int ret = -ENOENT;
+ lock_kernel();
minor = MINOR(inode->i_rdev);
if (minor < DEVCOUNT) {
if (openCnt > 0) {
minor = MINOR(inode->i_rdev);
if (minor < DEVCOUNT) {
if (openCnt > 0) {
- ret
urn
-EALREADY;
+ ret
=
-EALREADY;
} else {
openCnt++;
} else {
openCnt++;
- ret
urn
0;
+ ret
=
0;
}
}
}
}
- return -ENOENT;
+ unlock_kernel();
+ return ret;
}
static int gio_close(struct inode *inode, struct file *filp)
}
static int gio_close(struct inode *inode, struct file *filp)
@@
-69,7
+73,7
@@
static int gio_ioctl(struct inode *inode, struct file *filp,
}
switch (cmd) {
}
switch (cmd) {
- case GIODRV_IOCSGIOSETADDR: /* addres set */
+ case GIODRV_IOCSGIOSETADDR: /* addres
s
set */
addr = data;
break;
addr = data;
break;
@@
-121,7
+125,7
@@
static int gio_ioctl(struct inode *inode, struct file *filp,
return 0;
}
return 0;
}
-static struct file_operations gio_fops = {
+static
const
struct file_operations gio_fops = {
.owner = THIS_MODULE,
.open = gio_open, /* open */
.release = gio_close, /* release */
.owner = THIS_MODULE,
.open = gio_open, /* open */
.release = gio_close, /* release */