numa: fix NULL pointer access and memory leak in unregister_one_node()
PATCH 1/1 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 <[email protected]>
--- drivers/base/node.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)
drivers/base/node.c +4 -0
@@ -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 ; }
Signature · 1 line
1.7.1