| .. | .. |
|---|
| 959 | 959 | * if it returns an error! |
|---|
| 960 | 960 | */ |
|---|
| 961 | 961 | if ((rc = cxl_register_afu(afu))) |
|---|
| 962 | | - goto err_put1; |
|---|
| 962 | + goto err_put_dev; |
|---|
| 963 | 963 | |
|---|
| 964 | 964 | if ((rc = cxl_sysfs_afu_add(afu))) |
|---|
| 965 | | - goto err_put1; |
|---|
| 965 | + goto err_del_dev; |
|---|
| 966 | 966 | |
|---|
| 967 | 967 | /* |
|---|
| 968 | 968 | * pHyp doesn't expose the programming models supported by the |
|---|
| .. | .. |
|---|
| 978 | 978 | afu->modes_supported = CXL_MODE_DIRECTED; |
|---|
| 979 | 979 | |
|---|
| 980 | 980 | if ((rc = cxl_afu_select_best_mode(afu))) |
|---|
| 981 | | - goto err_put2; |
|---|
| 981 | + goto err_remove_sysfs; |
|---|
| 982 | 982 | |
|---|
| 983 | 983 | adapter->afu[afu->slice] = afu; |
|---|
| 984 | 984 | |
|---|
| .. | .. |
|---|
| 998 | 998 | |
|---|
| 999 | 999 | return 0; |
|---|
| 1000 | 1000 | |
|---|
| 1001 | | -err_put2: |
|---|
| 1001 | +err_remove_sysfs: |
|---|
| 1002 | 1002 | cxl_sysfs_afu_remove(afu); |
|---|
| 1003 | | -err_put1: |
|---|
| 1004 | | - device_unregister(&afu->dev); |
|---|
| 1003 | +err_del_dev: |
|---|
| 1004 | + device_del(&afu->dev); |
|---|
| 1005 | +err_put_dev: |
|---|
| 1006 | + put_device(&afu->dev); |
|---|
| 1005 | 1007 | free = false; |
|---|
| 1006 | 1008 | guest_release_serr_irq(afu); |
|---|
| 1007 | 1009 | err2: |
|---|
| .. | .. |
|---|
| 1135 | 1137 | * even if it returns an error! |
|---|
| 1136 | 1138 | */ |
|---|
| 1137 | 1139 | if ((rc = cxl_register_adapter(adapter))) |
|---|
| 1138 | | - goto err_put1; |
|---|
| 1140 | + goto err_put_dev; |
|---|
| 1139 | 1141 | |
|---|
| 1140 | 1142 | if ((rc = cxl_sysfs_adapter_add(adapter))) |
|---|
| 1141 | | - goto err_put1; |
|---|
| 1143 | + goto err_del_dev; |
|---|
| 1142 | 1144 | |
|---|
| 1143 | 1145 | /* release the context lock as the adapter is configured */ |
|---|
| 1144 | 1146 | cxl_adapter_context_unlock(adapter); |
|---|
| 1145 | 1147 | |
|---|
| 1146 | 1148 | return adapter; |
|---|
| 1147 | 1149 | |
|---|
| 1148 | | -err_put1: |
|---|
| 1149 | | - device_unregister(&adapter->dev); |
|---|
| 1150 | +err_del_dev: |
|---|
| 1151 | + device_del(&adapter->dev); |
|---|
| 1152 | +err_put_dev: |
|---|
| 1153 | + put_device(&adapter->dev); |
|---|
| 1150 | 1154 | free = false; |
|---|
| 1151 | 1155 | cxl_guest_remove_chardev(adapter); |
|---|
| 1152 | 1156 | err1: |
|---|