[<prev] [next>] [day] [month] [year] [list]
Message-ID: <53183D5D.4020000@huawei.com>
Date: Thu, 6 Mar 2014 17:18:21 +0800
From: Xishi Qiu <qiuxishi@...wei.com>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
<jiang.liu@...ux.intel.com>
CC: LKML <linux-kernel@...r.kernel.org>,
Xishi Qiu <qiuxishi@...wei.com>
Subject: [PATCH] numa: fix NULL pointer access and memory leak in unregister_one_node()
When doing socket hot remove, "node_devices[nid]" is set to NULL;
acpi_processor_remove()
try_offline_node()
unregister_one_node()
Then hot add a socket, but do not echo 1 > /sys/devices/system/cpu/cpuXX/online,
so register_one_node() will not be called, and "node_devices[nid]"
is still NULL.
If doing socket hot remove again, NULL pointer access will be happen.
unregister_one_node()
unregister_node()
Another, we should free the memory used by "node_devices[nid]" in
unregister_one_node().
Signed-off-by: Xishi Qiu <qiuxishi@...wei.com>
---
drivers/base/node.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/drivers/base/node.c b/drivers/base/node.c
index bc9f43b..8f7ed99 100644
--- a/drivers/base/node.c
+++ b/drivers/base/node.c
@@ -599,7 +599,11 @@ int register_one_node(int nid)
void unregister_one_node(int nid)
{
+ if (!node_devices[nid])
+ return;
+
unregister_node(node_devices[nid]);
+ kfree(node_devices[nid]);
node_devices[nid] = NULL;
}
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists