|
@@ -124,8 +124,8 @@ static ssize_t harddog_write(struct file *file, const char __user *data, size_t
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int harddog_ioctl(struct inode *inode, struct file *file,
|
|
|
|
- unsigned int cmd, unsigned long arg)
|
|
|
|
|
|
+static int harddog_ioctl_unlocked(struct file *file,
|
|
|
|
+ unsigned int cmd, unsigned long arg)
|
|
{
|
|
{
|
|
void __user *argp= (void __user *)arg;
|
|
void __user *argp= (void __user *)arg;
|
|
static struct watchdog_info ident = {
|
|
static struct watchdog_info ident = {
|
|
@@ -148,10 +148,22 @@ static int harddog_ioctl(struct inode *inode, struct file *file,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static long harddog_ioctl(struct file *file,
|
|
|
|
+ unsigned int cmd, unsigned long arg)
|
|
|
|
+{
|
|
|
|
+ long ret;
|
|
|
|
+
|
|
|
|
+ lock_kernel();
|
|
|
|
+ ret = harddog_ioctl_unlocked(file, cmd, arg);
|
|
|
|
+ unlock_kernel();
|
|
|
|
+
|
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
+
|
|
static const struct file_operations harddog_fops = {
|
|
static const struct file_operations harddog_fops = {
|
|
.owner = THIS_MODULE,
|
|
.owner = THIS_MODULE,
|
|
.write = harddog_write,
|
|
.write = harddog_write,
|
|
- .ioctl = harddog_ioctl,
|
|
|
|
|
|
+ .unlocked_ioctl = harddog_ioctl,
|
|
.open = harddog_open,
|
|
.open = harddog_open,
|
|
.release = harddog_release,
|
|
.release = harddog_release,
|
|
};
|
|
};
|