|
@@ -901,10 +901,15 @@ static int ap_device_probe(struct device *dev)
|
|
|
int rc;
|
|
|
|
|
|
ap_dev->drv = ap_drv;
|
|
|
+
|
|
|
+ spin_lock_bh(&ap_device_list_lock);
|
|
|
+ list_add(&ap_dev->list, &ap_device_list);
|
|
|
+ spin_unlock_bh(&ap_device_list_lock);
|
|
|
+
|
|
|
rc = ap_drv->probe ? ap_drv->probe(ap_dev) : -ENODEV;
|
|
|
- if (!rc) {
|
|
|
+ if (rc) {
|
|
|
spin_lock_bh(&ap_device_list_lock);
|
|
|
- list_add(&ap_dev->list, &ap_device_list);
|
|
|
+ list_del_init(&ap_dev->list);
|
|
|
spin_unlock_bh(&ap_device_list_lock);
|
|
|
}
|
|
|
return rc;
|