From: Joshua Scott Date: Fri, 9 Sep 2016 05:19:26 +0000 (+1200) Subject: hwmon: (adt7470) Allow faster removal X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=93cacfd41f82eea00b420d62e29a493ca3d07b74;p=linux-beck.git hwmon: (adt7470) Allow faster removal adt7470_remove will wait for the update thread to complete before returning. This had a worst-case time of up to the user-configurable auto_update_interval. Replace msleep_interruptible with set_current_state and schedule_timeout so that kthread_stop will interrupt the sleep. Signed-off-by: Joshua Scott Signed-off-by: Guenter Roeck --- diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c index dbd758be1924..ffe1edc10ef0 100644 --- a/drivers/hwmon/adt7470.c +++ b/drivers/hwmon/adt7470.c @@ -273,9 +273,12 @@ static int adt7470_update_thread(void *p) mutex_lock(&data->lock); adt7470_read_temperatures(client, data); mutex_unlock(&data->lock); + + set_current_state(TASK_INTERRUPTIBLE); if (kthread_should_stop()) break; - msleep_interruptible(data->auto_update_interval); + + schedule_timeout(msecs_to_jiffies(data->auto_update_interval)); } complete_all(&data->auto_update_stop);