[PATCH] powerpc/nvram: Fix a memory leak in err path

Subsystems: linux for powerpc (32-bit and 64-bit), the rest

STALE3640d

4 messages, 4 authors, 2016-09-20 · open the first message on its own page

[PATCH] powerpc/nvram: Fix a memory leak in err path

From: xinhui <hidden>
Date: 2015-12-09 10:02:05

If kmemdup fails, We need kfree *buff* first then return -ENOMEM.
Otherwise there is a memory leak.

Signed-off-by: Pan Xinhui <redacted>
---
 arch/powerpc/kernel/nvram_64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
index 32e2652..21a278b7 100644
--- a/arch/powerpc/kernel/nvram_64.c
+++ b/arch/powerpc/kernel/nvram_64.c
@@ -542,9 +542,9 @@ static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type,
 			time->tv_nsec = 0;
 		}
 		*buf = kmemdup(buff + hdr_size, length, GFP_KERNEL);
+		kfree(buff);
 		if (*buf == NULL)
 			return -ENOMEM;
-		kfree(buff);
 
 		if (err_type == ERR_TYPE_KERNEL_PANIC_GZ)
 			*compressed = true;
-- 
2.5.0

Re: [PATCH] powerpc/nvram: Fix a memory leak in err path

From: Nathan Fontenot <hidden>
Date: 2015-12-09 15:21:43

On 12/09/2015 04:00 AM, xinhui wrote:
If kmemdup fails, We need kfree *buff* first then return -ENOMEM.
Otherwise there is a memory leak.

Signed-off-by: Pan Xinhui <redacted>
Reviewed-by: Nathan Fontenot <redacted>
quoted hunk
---
 arch/powerpc/kernel/nvram_64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
index 32e2652..21a278b7 100644
--- a/arch/powerpc/kernel/nvram_64.c
+++ b/arch/powerpc/kernel/nvram_64.c
@@ -542,9 +542,9 @@ static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type,
 			time->tv_nsec = 0;
 		}
 		*buf = kmemdup(buff + hdr_size, length, GFP_KERNEL);
+		kfree(buff);
 		if (*buf == NULL)
 			return -ENOMEM;
-		kfree(buff);
 
 		if (err_type == ERR_TYPE_KERNEL_PANIC_GZ)
 			*compressed = true;

Re: [PATCH] powerpc/nvram: Fix a memory leak in err path

From: xinhui <hidden>
Date: 2015-12-09 23:52:21

On 2015/12/9 23:21, Nathan Fontenot wrote:
On 12/09/2015 04:00 AM, xinhui wrote:
quoted
If kmemdup fails, We need kfree *buff* first then return -ENOMEM.
Otherwise there is a memory leak.

Signed-off-by: Pan Xinhui <redacted>
Reviewed-by: Nathan Fontenot <redacted>
Hi Nathan,
	thank you for doing that :)

thanks
xinhui
quoted
---
  arch/powerpc/kernel/nvram_64.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
index 32e2652..21a278b7 100644
--- a/arch/powerpc/kernel/nvram_64.c
+++ b/arch/powerpc/kernel/nvram_64.c
@@ -542,9 +542,9 @@ static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type,
  			time->tv_nsec = 0;
  		}
  		*buf = kmemdup(buff + hdr_size, length, GFP_KERNEL);
+		kfree(buff);
  		if (*buf == NULL)
  			return -ENOMEM;
-		kfree(buff);

  		if (err_type == ERR_TYPE_KERNEL_PANIC_GZ)
  			*compressed = true;

Re: powerpc/nvram: Fix a memory leak in err path

From: Michael Ellerman <hidden>
Date: 2016-09-20 13:07:24

On Wed, 2015-09-12 at 10:00:53 UTC, xinhui wrote:
If kmemdup fails, We need kfree *buff* first then return -ENOMEM.
Otherwise there is a memory leak.

Signed-off-by: Pan Xinhui <redacted>
Reviewed-by: Nathan Fontenot <redacted>
Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/0d0fecc5b5bfddb0e67bef985c

cheers
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help