You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.2 KiB
44 lines
1.2 KiB
From 7b5f3e98680f0720f9e6d06b6acdcbf92af4aedd Mon Sep 17 00:00:00 2001 |
|
From: Pingfan Liu <piliu@redhat.com> |
|
Date: Thu, 10 Jun 2021 10:54:08 +0800 |
|
Subject: [PATCH 2/6] shm.c: fix memleak in dump_shm() |
|
|
|
Signed-off-by: Pingfan Liu <piliu@redhat.com> |
|
--- |
|
shm.c | 6 ++++-- |
|
1 file changed, 4 insertions(+), 2 deletions(-) |
|
|
|
diff --git a/shm.c b/shm.c |
|
index 79043c9..c0b6ee3 100644 |
|
--- a/shm.c |
|
+++ b/shm.c |
|
@@ -182,7 +182,7 @@ dumppol(unsigned long long start, unsigned long long end, int pol, struct bitmas |
|
/* Dump policies in a shared memory segment. */ |
|
void dump_shm(void) |
|
{ |
|
- struct bitmask *nodes, *prevnodes; |
|
+ struct bitmask *nodes, *prevnodes, *tag; |
|
int prevpol = -1, pol; |
|
unsigned long long c, start; |
|
|
|
@@ -193,7 +193,7 @@ void dump_shm(void) |
|
} |
|
|
|
nodes = numa_allocate_nodemask(); |
|
- prevnodes = numa_allocate_nodemask(); |
|
+ tag = prevnodes = numa_allocate_nodemask(); |
|
|
|
for (c = 0; c < shmlen; c += shm_pagesize) { |
|
if (get_mempolicy(&pol, nodes->maskp, nodes->size, c+shmptr, |
|
@@ -208,6 +208,8 @@ void dump_shm(void) |
|
start = c; |
|
} |
|
dumppol(start, c, prevpol, prevnodes); |
|
+ numa_free_nodemask(nodes); |
|
+ numa_free_nodemask(tag); |
|
} |
|
|
|
static void dumpnode(unsigned long long start, unsigned long long end, int node) |
|
-- |
|
2.29.2 |
|
|
|
|