hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/misc/cxl/pci.c
....@@ -387,6 +387,7 @@
387387 rc = get_phb_index(np, phb_index);
388388 if (rc) {
389389 pr_err("cxl: invalid phb index\n");
390
+ of_node_put(np);
390391 return rc;
391392 }
392393
....@@ -1164,10 +1165,10 @@
11641165 * if it returns an error!
11651166 */
11661167 if ((rc = cxl_register_afu(afu)))
1167
- goto err_put1;
1168
+ goto err_put_dev;
11681169
11691170 if ((rc = cxl_sysfs_afu_add(afu)))
1170
- goto err_put1;
1171
+ goto err_del_dev;
11711172
11721173 adapter->afu[afu->slice] = afu;
11731174
....@@ -1176,10 +1177,12 @@
11761177
11771178 return 0;
11781179
1179
-err_put1:
1180
+err_del_dev:
1181
+ device_del(&afu->dev);
1182
+err_put_dev:
11801183 pci_deconfigure_afu(afu);
11811184 cxl_debugfs_afu_remove(afu);
1182
- device_unregister(&afu->dev);
1185
+ put_device(&afu->dev);
11831186 return rc;
11841187
11851188 err_free_native:
....@@ -1667,23 +1670,25 @@
16671670 * even if it returns an error!
16681671 */
16691672 if ((rc = cxl_register_adapter(adapter)))
1670
- goto err_put1;
1673
+ goto err_put_dev;
16711674
16721675 if ((rc = cxl_sysfs_adapter_add(adapter)))
1673
- goto err_put1;
1676
+ goto err_del_dev;
16741677
16751678 /* Release the context lock as adapter is configured */
16761679 cxl_adapter_context_unlock(adapter);
16771680
16781681 return adapter;
16791682
1680
-err_put1:
1683
+err_del_dev:
1684
+ device_del(&adapter->dev);
1685
+err_put_dev:
16811686 /* This should mirror cxl_remove_adapter, except without the
16821687 * sysfs parts
16831688 */
16841689 cxl_debugfs_adapter_remove(adapter);
16851690 cxl_deconfigure_adapter(adapter);
1686
- device_unregister(&adapter->dev);
1691
+ put_device(&adapter->dev);
16871692 return ERR_PTR(rc);
16881693
16891694 err_release: