diff options
| -rw-r--r-- | drivers/s390/crypto/ap_bus.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index 69ef4f8cfac8..4038437ff033 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c | |||
| @@ -901,10 +901,15 @@ static int ap_device_probe(struct device *dev) | |||
| 901 | int rc; | 901 | int rc; |
| 902 | 902 | ||
| 903 | ap_dev->drv = ap_drv; | 903 | ap_dev->drv = ap_drv; |
| 904 | |||
| 905 | spin_lock_bh(&ap_device_list_lock); | ||
| 906 | list_add(&ap_dev->list, &ap_device_list); | ||
| 907 | spin_unlock_bh(&ap_device_list_lock); | ||
| 908 | |||
| 904 | rc = ap_drv->probe ? ap_drv->probe(ap_dev) : -ENODEV; | 909 | rc = ap_drv->probe ? ap_drv->probe(ap_dev) : -ENODEV; |
| 905 | if (!rc) { | 910 | if (rc) { |
| 906 | spin_lock_bh(&ap_device_list_lock); | 911 | spin_lock_bh(&ap_device_list_lock); |
| 907 | list_add(&ap_dev->list, &ap_device_list); | 912 | list_del_init(&ap_dev->list); |
| 908 | spin_unlock_bh(&ap_device_list_lock); | 913 | spin_unlock_bh(&ap_device_list_lock); |
| 909 | } | 914 | } |
| 910 | return rc; | 915 | return rc; |
