diff options
| -rw-r--r-- | drivers/s390/cio/device.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index c6abb75c4615..6d229f3523a0 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c | |||
| @@ -764,7 +764,7 @@ static void sch_create_and_recog_new_device(struct subchannel *sch) | |||
| 764 | static void io_subchannel_register(struct ccw_device *cdev) | 764 | static void io_subchannel_register(struct ccw_device *cdev) |
| 765 | { | 765 | { |
| 766 | struct subchannel *sch; | 766 | struct subchannel *sch; |
| 767 | int ret; | 767 | int ret, adjust_init_count = 1; |
| 768 | unsigned long flags; | 768 | unsigned long flags; |
| 769 | 769 | ||
| 770 | sch = to_subchannel(cdev->dev.parent); | 770 | sch = to_subchannel(cdev->dev.parent); |
| @@ -793,6 +793,7 @@ static void io_subchannel_register(struct ccw_device *cdev) | |||
| 793 | cdev->private->dev_id.ssid, | 793 | cdev->private->dev_id.ssid, |
| 794 | cdev->private->dev_id.devno); | 794 | cdev->private->dev_id.devno); |
| 795 | } | 795 | } |
| 796 | adjust_init_count = 0; | ||
| 796 | goto out; | 797 | goto out; |
| 797 | } | 798 | } |
| 798 | /* | 799 | /* |
| @@ -818,7 +819,7 @@ out: | |||
| 818 | cdev->private->flags.recog_done = 1; | 819 | cdev->private->flags.recog_done = 1; |
| 819 | wake_up(&cdev->private->wait_q); | 820 | wake_up(&cdev->private->wait_q); |
| 820 | out_err: | 821 | out_err: |
| 821 | if (atomic_dec_and_test(&ccw_device_init_count)) | 822 | if (adjust_init_count && atomic_dec_and_test(&ccw_device_init_count)) |
| 822 | wake_up(&ccw_device_init_wq); | 823 | wake_up(&ccw_device_init_wq); |
| 823 | } | 824 | } |
| 824 | 825 | ||
