The conversion of fschmd watchdog ioctl to unlocked_ioctl needs to protect the static watchdog_info variable for the WDIOC_GETSUPPORT command. All other commands are safe w/o BKL as the called watchdog functions are already serialized with watchdog_lock of the sensor. Signed-off-by: Thomas Gleixner Cc: lm-sensors@lm-sensors.org --- drivers/hwmon/fschmd.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) Index: linux-2.6-tip/drivers/hwmon/fschmd.c =================================================================== --- linux-2.6-tip.orig/drivers/hwmon/fschmd.c +++ linux-2.6-tip/drivers/hwmon/fschmd.c @@ -844,8 +844,8 @@ static ssize_t watchdog_write(struct fil return count; } -static int watchdog_ioctl(struct inode *inode, struct file *filp, - unsigned int cmd, unsigned long arg) +static long watchdog_ioctl(struct file *filp, unsigned int cmd, + unsigned long arg) { static struct watchdog_info ident = { .options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT | @@ -857,11 +857,13 @@ static int watchdog_ioctl(struct inode * switch (cmd) { case WDIOC_GETSUPPORT: + mutex_lock(&watchdog_data_mutex); ident.firmware_version = data->revision; if (!nowayout) ident.options |= WDIOF_MAGICCLOSE; if (copy_to_user((void __user *)arg, &ident, sizeof(ident))) ret = -EFAULT; + mutex_unlock(&watchdog_data_mutex); break; case WDIOC_GETSTATUS: @@ -921,7 +923,7 @@ static const struct file_operations watc .open = watchdog_open, .release = watchdog_release, .write = watchdog_write, - .ioctl = watchdog_ioctl, + .unlocked_ioctl = watchdog_ioctl, }; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/