diff options
-rw-r--r-- | drivers/s390/cio/device_fsm.c | 8 |
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 | } |