[PATCH v5 11/18] cxl: Separate bare-metal fields in adapter and AFU data structures
Ian Munsie
imunsie at au1.ibm.com
Thu Mar 3 15:09:20 AEDT 2016
Excerpts from Frederic Barrat's message of 2016-02-24 03:21:52 +1100:
> static int pci_init_afu(struct cxl *adapter, int slice, struct pci_dev *dev)
> {
> struct cxl_afu *afu;
> - int rc;
> + int rc = -ENOMEM;
>
> afu = cxl_alloc_afu(adapter, slice);
> if (!afu)
> return -ENOMEM;
>
> + afu->native = kzalloc(sizeof(struct cxl_afu_native), GFP_KERNEL);
> + if (!afu->native)
> + goto err_free_afu;
> +
> + mutex_init(&afu->native->spa_mutex);
> +
> rc = dev_set_name(&afu->dev, "afu%i.%i", adapter->adapter_num, slice);
> if (rc)
> - goto err_free;
> + goto err_free_native;
>
> rc = pci_configure_afu(afu, adapter, dev);
> if (rc)
> - goto err_free;
> + goto err_free_native;
>
> /* Don't care if this fails */
> cxl_debugfs_afu_add(afu);
> @@ -859,7 +866,9 @@ err_put1:
> device_unregister(&afu->dev);
> return rc;
>
> -err_free:
> +err_free_native:
> + kfree(afu->native);
> +err_free_afu:
> kfree(afu);
> return rc;
Great - thanks for changing that to use consistent error paths :)
> @@ -1162,6 +1172,12 @@ static struct cxl *cxl_pci_init_adapter(struct pci_dev *dev)
> if (!adapter)
> return ERR_PTR(-ENOMEM);
>
> + adapter->native = kzalloc(sizeof(struct cxl_native), GFP_KERNEL);
> + if (!adapter->native) {
> + rc = -ENOMEM;
> + goto err_release;
> + }
> +
> /* Set defaults for parameters which need to persist over
> * configure/reconfigure
> */
> @@ -1171,8 +1187,7 @@ static struct cxl *cxl_pci_init_adapter(struct pci_dev *dev)
> rc = cxl_configure_adapter(adapter, dev);
> if (rc) {
> pci_disable_device(dev);
> - cxl_release_adapter(&adapter->dev);
> - return ERR_PTR(rc);
> + goto err_release;
> }
>
> /* Don't care if this one fails: */
> @@ -1198,6 +1213,10 @@ err_put1:
> cxl_deconfigure_adapter(adapter);
> device_unregister(&adapter->dev);
> return ERR_PTR(rc);
> +
> +err_release:
> + cxl_release_adapter(&adapter->dev);
> + return ERR_PTR(rc);
> }
Likewise, looks much better now :)
Acked-by: Ian Munsie <imunsie at au1.ibm.com>
Cheers,
-Ian
More information about the Linuxppc-dev
mailing list