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.
45 lines
1.2 KiB
45 lines
1.2 KiB
2 years ago
|
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
|
||
|
|