linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] cxl: Fix + cleanup error paths in cxl_dev_context_init
@ 2015-08-27  9:50 Ian Munsie
  2015-08-27  9:50 ` [PATCH 2/2] cxl: Fix force unmapping mmaps of contexts allocated through the kernel api Ian Munsie
  2015-08-30 21:20 ` [1/2] cxl: Fix + cleanup error paths in cxl_dev_context_init Michael Ellerman
  0 siblings, 2 replies; 4+ messages in thread
From: Ian Munsie @ 2015-08-27  9:50 UTC (permalink / raw)
  To: mpe; +Cc: mikey, linux-kernel, linuxppc-dev, Matt Ochs, Ian Munsie

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>
---
 drivers/misc/cxl/api.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

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);
 
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-08-30 21:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-27  9:50 [PATCH 1/2] cxl: Fix + cleanup error paths in cxl_dev_context_init Ian Munsie
2015-08-27  9:50 ` [PATCH 2/2] cxl: Fix force unmapping mmaps of contexts allocated through the kernel api Ian Munsie
2015-08-30 21:20   ` [2/2] " Michael Ellerman
2015-08-30 21:20 ` [1/2] cxl: Fix + cleanup error paths in cxl_dev_context_init Michael Ellerman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).