aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/device_fsm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/cio/device_fsm.c')
-rw-r--r--drivers/s390/cio/device_fsm.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/drivers/s390/cio/device_fsm.c b/drivers/s390/cio/device_fsm.c
index cd31bb5177e6..8b5fe57fb2f3 100644
--- a/drivers/s390/cio/device_fsm.c
+++ b/drivers/s390/cio/device_fsm.c
@@ -346,21 +346,15 @@ ccw_device_oper_notify(struct work_struct *work)
346 struct ccw_device_private *priv; 346 struct ccw_device_private *priv;
347 struct ccw_device *cdev; 347 struct ccw_device *cdev;
348 int ret; 348 int ret;
349 unsigned long flags;
350 349
351 priv = container_of(work, struct ccw_device_private, kick_work); 350 priv = container_of(work, struct ccw_device_private, kick_work);
352 cdev = priv->cdev; 351 cdev = priv->cdev;
353 ret = ccw_device_notify(cdev, CIO_OPER); 352 ret = ccw_device_notify(cdev, CIO_OPER);
354 spin_lock_irqsave(cdev->ccwlock, flags);
355 if (ret) { 353 if (ret) {
356 /* Reenable channel measurements, if needed. */ 354 /* Reenable channel measurements, if needed. */
357 spin_unlock_irqrestore(cdev->ccwlock, flags);
358 cmf_reenable(cdev); 355 cmf_reenable(cdev);
359 spin_lock_irqsave(cdev->ccwlock, flags);
360 wake_up(&cdev->private->wait_q); 356 wake_up(&cdev->private->wait_q);
361 } 357 } else
362 spin_unlock_irqrestore(cdev->ccwlock, flags);
363 if (!ret)
364 /* Driver doesn't want device back. */ 358 /* Driver doesn't want device back. */
365 ccw_device_do_unreg_rereg(work); 359 ccw_device_do_unreg_rereg(work);
366} 360}