From 5e1ac3fb85066565d530b1da43f61feb657ff21e Mon Sep 17 00:00:00 2001 From: Nathan Fontenot Date: Tue, 19 Oct 2010 12:45:24 -0500 Subject: [PATCH] --- yaml --- r: 213475 b: refs/heads/master c: 2938ffbd466d2811a6012609684a2298eef35065 h: refs/heads/master i: 213473: 2931a401fafcc63db7af2c3e81703071307d6d8b 213471: 2cc1d4d00301bf5216ddc371279e08d208f99643 v: v3 --- [refs] | 2 +- trunk/drivers/base/memory.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b66558de4f62..36e33c1c9fe8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e4619c857d1d769b1172a75ba6b6ebd1186a9c58 +refs/heads/master: 2938ffbd466d2811a6012609684a2298eef35065 diff --git a/trunk/drivers/base/memory.c b/trunk/drivers/base/memory.c index 63c25601572d..5185bcff2de9 100644 --- a/trunk/drivers/base/memory.c +++ b/trunk/drivers/base/memory.c @@ -27,6 +27,8 @@ #include #include +static DEFINE_MUTEX(mem_sysfs_mutex); + #define MEMORY_CLASS_NAME "memory" static struct sysdev_class memory_sysdev_class = { @@ -484,6 +486,8 @@ static int add_memory_block(int nid, struct mem_section *section, if (!mem) return -ENOMEM; + mutex_lock(&mem_sysfs_mutex); + mem->phys_index = __section_nr(section); mem->state = state; mutex_init(&mem->state_mutex); @@ -504,6 +508,7 @@ static int add_memory_block(int nid, struct mem_section *section, ret = register_mem_sect_under_node(mem, nid); } + mutex_unlock(&mem_sysfs_mutex); return ret; } @@ -512,6 +517,7 @@ int remove_memory_block(unsigned long node_id, struct mem_section *section, { struct memory_block *mem; + mutex_lock(&mem_sysfs_mutex); mem = find_memory_block(section); unregister_mem_sect_under_nodes(mem); mem_remove_simple_file(mem, phys_index); @@ -520,6 +526,7 @@ int remove_memory_block(unsigned long node_id, struct mem_section *section, mem_remove_simple_file(mem, removable); unregister_memory(mem, section); + mutex_unlock(&mem_sysfs_mutex); return 0; }