diff options
Diffstat (limited to 'drivers/misc/mei/interrupt.c')
-rw-r--r-- | drivers/misc/mei/interrupt.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c index 0f25cee6ab85..0900a711badd 100644 --- a/drivers/misc/mei/interrupt.c +++ b/drivers/misc/mei/interrupt.c | |||
@@ -1224,10 +1224,9 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list, | |||
1224 | } | 1224 | } |
1225 | } | 1225 | } |
1226 | 1226 | ||
1227 | if (dev->stop && !dev->wd_pending) { | 1227 | if (dev->wd_state == MEI_WD_STOPPING) { |
1228 | dev->wd_stopped = true; | 1228 | dev->wd_state = MEI_WD_IDLE; |
1229 | wake_up_interruptible(&dev->wait_stop_wd); | 1229 | wake_up_interruptible(&dev->wait_stop_wd); |
1230 | return 0; | ||
1231 | } | 1230 | } |
1232 | 1231 | ||
1233 | if (dev->extra_write_index) { | 1232 | if (dev->extra_write_index) { |
@@ -1250,14 +1249,12 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list, | |||
1250 | 1249 | ||
1251 | dev->wd_pending = false; | 1250 | dev->wd_pending = false; |
1252 | 1251 | ||
1253 | if (dev->wd_timeout) | 1252 | if (dev->wd_state == MEI_WD_RUNNING) |
1254 | *slots -= mei_data2slots(MEI_WD_START_MSG_SIZE); | 1253 | *slots -= mei_data2slots(MEI_WD_START_MSG_SIZE); |
1255 | else | 1254 | else |
1256 | *slots -= mei_data2slots(MEI_WD_STOP_MSG_SIZE); | 1255 | *slots -= mei_data2slots(MEI_WD_STOP_MSG_SIZE); |
1257 | } | 1256 | } |
1258 | } | 1257 | } |
1259 | if (dev->stop) | ||
1260 | return -ENODEV; | ||
1261 | 1258 | ||
1262 | /* complete control write list CB */ | 1259 | /* complete control write list CB */ |
1263 | dev_dbg(&dev->pdev->dev, "complete control write list cb.\n"); | 1260 | dev_dbg(&dev->pdev->dev, "complete control write list cb.\n"); |