This changes the ioctl usage of kernel/power/user.c to use the unlocked_ioctl Signed-off-by: Stoyan Gaydarov <stoyboyker@xxxxxxxxx> diff -uprN linux-2.6.26-rc9/kernel/power/user.c devel/kernel/power/user.c --- linux-2.6.26-rc9/kernel/power/user.c 2008-07-05 17:53:22.000000000 -0500 +++ devel/kernel/power/user.c 2008-07-10 19:26:42.000000000 -0500 @@ -18,6 +18,7 @@ #include <linux/mm.h> #include <linux/swap.h> #include <linux/swapops.h> +#include <linux/smp_lock.h> #include <linux/pm.h> #include <linux/fs.h> #include <linux/console.h> @@ -164,20 +165,28 @@ static ssize_t snapshot_write(struct fil return res; } -static int snapshot_ioctl(struct inode *inode, struct file *filp, - unsigned int cmd, unsigned long arg) +static long snapshot_ioctl(struct file *filp, unsigned int cmd, + unsigned long arg) { int error = 0; struct snapshot_data *data; loff_t size; sector_t offset; - if (_IOC_TYPE(cmd) != SNAPSHOT_IOC_MAGIC) + lock_kernel(); + + if (_IOC_TYPE(cmd) != SNAPSHOT_IOC_MAGIC) { + unlock_kernel(); return -ENOTTY; - if (_IOC_NR(cmd) > SNAPSHOT_IOC_MAXNR) + } + if (_IOC_NR(cmd) > SNAPSHOT_IOC_MAXNR) { + unlock_kernel(); return -ENOTTY; - if (!capable(CAP_SYS_ADMIN)) + } + if (!capable(CAP_SYS_ADMIN)) { + unlock_kernel(); return -EPERM; + } data = filp->private_data; @@ -390,6 +399,7 @@ static int snapshot_ioctl(struct inode * } + unlock_kernel(); return error; } @@ -399,7 +409,7 @@ static const struct file_operations snap .read = snapshot_read, .write = snapshot_write, .llseek = no_llseek, - .ioctl = snapshot_ioctl, + .unlocked_ioctl = snapshot_ioctl, }; static struct miscdevice snapshot_device = { _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm