diff options
| -rw-r--r-- | drivers/s390/cio/device.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index 2ff8a22d4257..e8391b89eff4 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c | |||
| @@ -1455,7 +1455,16 @@ static int io_subchannel_sch_event(struct subchannel *sch, int process) | |||
| 1455 | break; | 1455 | break; |
| 1456 | case IO_SCH_UNREG_ATTACH: | 1456 | case IO_SCH_UNREG_ATTACH: |
| 1457 | case IO_SCH_UNREG: | 1457 | case IO_SCH_UNREG: |
| 1458 | if (cdev) | 1458 | if (!cdev) |
| 1459 | break; | ||
| 1460 | if (cdev->private->state == DEV_STATE_SENSE_ID) { | ||
| 1461 | /* | ||
| 1462 | * Note: delayed work triggered by this event | ||
| 1463 | * and repeated calls to sch_event are synchronized | ||
| 1464 | * by the above check for work_pending(cdev). | ||
| 1465 | */ | ||
| 1466 | dev_fsm_event(cdev, DEV_EVENT_NOTOPER); | ||
| 1467 | } else | ||
| 1459 | ccw_device_set_notoper(cdev); | 1468 | ccw_device_set_notoper(cdev); |
| 1460 | break; | 1469 | break; |
| 1461 | case IO_SCH_NOP: | 1470 | case IO_SCH_NOP: |
