• Y
    driver/base/node: remove unnecessary kfree of node struct from unregister_one_node · 33ead538
    Yasuaki Ishimatsu 提交于
    Commit 92d585ef ("numa: fix NULL pointer access and memory
    leak in unregister_one_node()") added kfree() of node struct in
    unregister_one_node(). But node struct is freed by node_device_release()
    which is called in  unregister_node(). So by adding the kfree(),
    node struct is freed two times.
    
    While hot removing memory, the commit leads the following BUG_ON():
    
      kernel BUG at mm/slub.c:3346!
      invalid opcode: 0000 [#1] SMP
      [...]
      Call Trace:
       [...] unregister_one_node
       [...] try_offline_node
       [...] remove_memory
       [...] acpi_memory_device_remove
       [...] acpi_bus_trim
       [...] acpi_bus_trim
       [...] acpi_device_hotplug
       [...] acpi_hotplug_work_fn
       [...] process_one_work
       [...] worker_thread
       [...] ? rescuer_thread
       [...] kthread
       [...] ? kthread_create_on_node
       [...] ret_from_fork
       [...] ? kthread_create_on_node
    
    This patch removes unnecessary kfree() from unregister_one_node().
    Signed-off-by: NYasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Cc: Xishi Qiu <qiuxishi@huawei.com>
    Cc: stable@vger.kernel.org # v3.16+
    Fixes: 92d585ef "numa: fix NULL pointer access and memory leak in unregister_one_node()"
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    33ead538
node.c 18.5 KB