.. | .. |
---|
387 | 387 | rc = get_phb_index(np, phb_index); |
---|
388 | 388 | if (rc) { |
---|
389 | 389 | pr_err("cxl: invalid phb index\n"); |
---|
| 390 | + of_node_put(np); |
---|
390 | 391 | return rc; |
---|
391 | 392 | } |
---|
392 | 393 | |
---|
.. | .. |
---|
1164 | 1165 | * if it returns an error! |
---|
1165 | 1166 | */ |
---|
1166 | 1167 | if ((rc = cxl_register_afu(afu))) |
---|
1167 | | - goto err_put1; |
---|
| 1168 | + goto err_put_dev; |
---|
1168 | 1169 | |
---|
1169 | 1170 | if ((rc = cxl_sysfs_afu_add(afu))) |
---|
1170 | | - goto err_put1; |
---|
| 1171 | + goto err_del_dev; |
---|
1171 | 1172 | |
---|
1172 | 1173 | adapter->afu[afu->slice] = afu; |
---|
1173 | 1174 | |
---|
.. | .. |
---|
1176 | 1177 | |
---|
1177 | 1178 | return 0; |
---|
1178 | 1179 | |
---|
1179 | | -err_put1: |
---|
| 1180 | +err_del_dev: |
---|
| 1181 | + device_del(&afu->dev); |
---|
| 1182 | +err_put_dev: |
---|
1180 | 1183 | pci_deconfigure_afu(afu); |
---|
1181 | 1184 | cxl_debugfs_afu_remove(afu); |
---|
1182 | | - device_unregister(&afu->dev); |
---|
| 1185 | + put_device(&afu->dev); |
---|
1183 | 1186 | return rc; |
---|
1184 | 1187 | |
---|
1185 | 1188 | err_free_native: |
---|
.. | .. |
---|
1667 | 1670 | * even if it returns an error! |
---|
1668 | 1671 | */ |
---|
1669 | 1672 | if ((rc = cxl_register_adapter(adapter))) |
---|
1670 | | - goto err_put1; |
---|
| 1673 | + goto err_put_dev; |
---|
1671 | 1674 | |
---|
1672 | 1675 | if ((rc = cxl_sysfs_adapter_add(adapter))) |
---|
1673 | | - goto err_put1; |
---|
| 1676 | + goto err_del_dev; |
---|
1674 | 1677 | |
---|
1675 | 1678 | /* Release the context lock as adapter is configured */ |
---|
1676 | 1679 | cxl_adapter_context_unlock(adapter); |
---|
1677 | 1680 | |
---|
1678 | 1681 | return adapter; |
---|
1679 | 1682 | |
---|
1680 | | -err_put1: |
---|
| 1683 | +err_del_dev: |
---|
| 1684 | + device_del(&adapter->dev); |
---|
| 1685 | +err_put_dev: |
---|
1681 | 1686 | /* This should mirror cxl_remove_adapter, except without the |
---|
1682 | 1687 | * sysfs parts |
---|
1683 | 1688 | */ |
---|
1684 | 1689 | cxl_debugfs_adapter_remove(adapter); |
---|
1685 | 1690 | cxl_deconfigure_adapter(adapter); |
---|
1686 | | - device_unregister(&adapter->dev); |
---|
| 1691 | + put_device(&adapter->dev); |
---|
1687 | 1692 | return ERR_PTR(rc); |
---|
1688 | 1693 | |
---|
1689 | 1694 | err_release: |
---|