All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] ocxl: Fix potential memory leak on context creation
@ 2019-12-09 10:55 Frederic Barrat
  2019-12-09 13:32 ` Andrew Donnellan
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Frederic Barrat @ 2019-12-09 10:55 UTC (permalink / raw)
  To: linuxppc-dev, andrew.donnellan, alastair; +Cc: clombard, groug

If we couldn't fully init a context, we were leaking memory.

Fixes: b9721d275cc2 ("ocxl: Allow external drivers to use OpenCAPI contexts")
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
---
Changlog:
v3:
	code cleanup (Greg)
v2:
	reset context pointer in case of allocation failure (Andrew)


 drivers/misc/ocxl/context.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/misc/ocxl/context.c b/drivers/misc/ocxl/context.c
index 994563a078eb..de8a66b9d76b 100644
--- a/drivers/misc/ocxl/context.c
+++ b/drivers/misc/ocxl/context.c
@@ -10,18 +10,17 @@ int ocxl_context_alloc(struct ocxl_context **context, struct ocxl_afu *afu,
 	int pasid;
 	struct ocxl_context *ctx;
 
-	*context = kzalloc(sizeof(struct ocxl_context), GFP_KERNEL);
-	if (!*context)
+	ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
+	if (!ctx)
 		return -ENOMEM;
 
-	ctx = *context;
-
 	ctx->afu = afu;
 	mutex_lock(&afu->contexts_lock);
 	pasid = idr_alloc(&afu->contexts_idr, ctx, afu->pasid_base,
 			afu->pasid_base + afu->pasid_max, GFP_KERNEL);
 	if (pasid < 0) {
 		mutex_unlock(&afu->contexts_lock);
+		kfree(ctx);
 		return pasid;
 	}
 	afu->pasid_count++;
@@ -43,6 +42,7 @@ int ocxl_context_alloc(struct ocxl_context **context, struct ocxl_afu *afu,
 	 * duration of the life of the context
 	 */
 	ocxl_afu_get(afu);
+	*context = ctx;
 	return 0;
 }
 EXPORT_SYMBOL_GPL(ocxl_context_alloc);
-- 
2.21.0


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

* Re: [PATCH v3] ocxl: Fix potential memory leak on context creation
  2019-12-09 10:55 [PATCH v3] ocxl: Fix potential memory leak on context creation Frederic Barrat
@ 2019-12-09 13:32 ` Andrew Donnellan
  2019-12-09 20:51 ` Greg Kurz
  2019-12-18  4:05 ` Michael Ellerman
  2 siblings, 0 replies; 4+ messages in thread
From: Andrew Donnellan @ 2019-12-09 13:32 UTC (permalink / raw)
  To: Frederic Barrat, linuxppc-dev, andrew.donnellan, alastair; +Cc: clombard, groug

On 9/12/19 9:55 pm, Frederic Barrat wrote:
> If we couldn't fully init a context, we were leaking memory.
> 
> Fixes: b9721d275cc2 ("ocxl: Allow external drivers to use OpenCAPI contexts")
> Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>

Acked-by: Andrew Donnellan <ajd@linux.ibm.com>

-- 
Andrew Donnellan              OzLabs, ADL Canberra
ajd@linux.ibm.com             IBM Australia Limited


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

* Re: [PATCH v3] ocxl: Fix potential memory leak on context creation
  2019-12-09 10:55 [PATCH v3] ocxl: Fix potential memory leak on context creation Frederic Barrat
  2019-12-09 13:32 ` Andrew Donnellan
@ 2019-12-09 20:51 ` Greg Kurz
  2019-12-18  4:05 ` Michael Ellerman
  2 siblings, 0 replies; 4+ messages in thread
From: Greg Kurz @ 2019-12-09 20:51 UTC (permalink / raw)
  To: Frederic Barrat; +Cc: clombard, linuxppc-dev, alastair, andrew.donnellan

On Mon,  9 Dec 2019 11:55:13 +0100
Frederic Barrat <fbarrat@linux.ibm.com> wrote:

> If we couldn't fully init a context, we were leaking memory.
> 
> Fixes: b9721d275cc2 ("ocxl: Allow external drivers to use OpenCAPI contexts")
> Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
> ---

Reviewed-by: Greg Kurz <groug@kaod.org>

> Changlog:
> v3:
> 	code cleanup (Greg)
> v2:
> 	reset context pointer in case of allocation failure (Andrew)
> 
> 
>  drivers/misc/ocxl/context.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/misc/ocxl/context.c b/drivers/misc/ocxl/context.c
> index 994563a078eb..de8a66b9d76b 100644
> --- a/drivers/misc/ocxl/context.c
> +++ b/drivers/misc/ocxl/context.c
> @@ -10,18 +10,17 @@ int ocxl_context_alloc(struct ocxl_context **context, struct ocxl_afu *afu,
>  	int pasid;
>  	struct ocxl_context *ctx;
>  
> -	*context = kzalloc(sizeof(struct ocxl_context), GFP_KERNEL);
> -	if (!*context)
> +	ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
> +	if (!ctx)
>  		return -ENOMEM;
>  
> -	ctx = *context;
> -
>  	ctx->afu = afu;
>  	mutex_lock(&afu->contexts_lock);
>  	pasid = idr_alloc(&afu->contexts_idr, ctx, afu->pasid_base,
>  			afu->pasid_base + afu->pasid_max, GFP_KERNEL);
>  	if (pasid < 0) {
>  		mutex_unlock(&afu->contexts_lock);
> +		kfree(ctx);
>  		return pasid;
>  	}
>  	afu->pasid_count++;
> @@ -43,6 +42,7 @@ int ocxl_context_alloc(struct ocxl_context **context, struct ocxl_afu *afu,
>  	 * duration of the life of the context
>  	 */
>  	ocxl_afu_get(afu);
> +	*context = ctx;
>  	return 0;
>  }
>  EXPORT_SYMBOL_GPL(ocxl_context_alloc);


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

* Re: [PATCH v3] ocxl: Fix potential memory leak on context creation
  2019-12-09 10:55 [PATCH v3] ocxl: Fix potential memory leak on context creation Frederic Barrat
  2019-12-09 13:32 ` Andrew Donnellan
  2019-12-09 20:51 ` Greg Kurz
@ 2019-12-18  4:05 ` Michael Ellerman
  2 siblings, 0 replies; 4+ messages in thread
From: Michael Ellerman @ 2019-12-18  4:05 UTC (permalink / raw)
  To: Frederic Barrat, linuxppc-dev, andrew.donnellan, alastair; +Cc: clombard, groug

On Mon, 2019-12-09 at 10:55:13 UTC, Frederic Barrat wrote:
> If we couldn't fully init a context, we were leaking memory.
> 
> Fixes: b9721d275cc2 ("ocxl: Allow external drivers to use OpenCAPI contexts")
> Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>

Applied to powerpc fixes, thanks.

https://git.kernel.org/powerpc/c/913e73c77d48aeeb50c16450a653dca9c71ae2e2

cheers

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

end of thread, other threads:[~2019-12-18  4:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-09 10:55 [PATCH v3] ocxl: Fix potential memory leak on context creation Frederic Barrat
2019-12-09 13:32 ` Andrew Donnellan
2019-12-09 20:51 ` Greg Kurz
2019-12-18  4:05 ` Michael Ellerman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.