Message ID | 1440669019-23800-1-git-send-email-imunsie@au.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
On Thu, 2015-27-08 at 09:50:18 UTC, Ian Munsie wrote: > From: Ian Munsie <imunsie@au1.ibm.com> > > If the cxl_context_alloc() call fails, we return immediately without > releasing the reference on the AFU device, allowing it to leak. > > This patch switches to using goto style error handling so that the > device is released in common code for both error paths, and will also > simplify things if we add additional initialisation in this function in > the future. > > Signed-off-by: Ian Munsie <imunsie@au1.ibm.com> Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/af2a50bb0ce1ca7a9c478481 cheers
diff --git a/drivers/misc/cxl/api.c b/drivers/misc/cxl/api.c index f49e3e5..005adc7 100644 --- a/drivers/misc/cxl/api.c +++ b/drivers/misc/cxl/api.c @@ -25,19 +25,24 @@ struct cxl_context *cxl_dev_context_init(struct pci_dev *dev) get_device(&afu->dev); ctx = cxl_context_alloc(); - if (IS_ERR(ctx)) - return ctx; + if (IS_ERR(ctx)) { + rc = PTR_ERR(ctx); + goto err_dev; + } /* Make it a slave context. We can promote it later? */ rc = cxl_context_init(ctx, afu, false, NULL); - if (rc) { - kfree(ctx); - put_device(&afu->dev); - return ERR_PTR(-ENOMEM); - } + if (rc) + goto err_ctx; cxl_assign_psn_space(ctx); return ctx; + +err_ctx: + kfree(ctx); +err_dev: + put_device(&afu->dev); + return ERR_PTR(rc); } EXPORT_SYMBOL_GPL(cxl_dev_context_init);