Skip to content

Commit

Permalink
Driver core: Add mutex for adding/removing memory blocks
Browse files Browse the repository at this point in the history
Add a new mutex for use in adding and removing of memory blocks.  This
is needed to avoid any race conditions in which the same memory block could
be added and removed at the same time.

Signed-off-by: Nathan Fontenot <nfont@austin.ibm.com>
Reviewed-by: Robin Holt <holt@sgi.com>
Reviewed-By: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Nathan Fontenot authored and Greg Kroah-Hartman committed Oct 22, 2010
1 parent e4619c8 commit 2938ffb
Showing 1 changed file with 7 additions and 0 deletions.
7 changes: 7 additions & 0 deletions drivers/base/memory.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
#include <asm/atomic.h>
#include <asm/uaccess.h>

static DEFINE_MUTEX(mem_sysfs_mutex);

#define MEMORY_CLASS_NAME "memory"

static struct sysdev_class memory_sysdev_class = {
Expand Down Expand Up @@ -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);
Expand All @@ -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;
}

Expand All @@ -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);
Expand All @@ -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;
}

Expand Down

0 comments on commit 2938ffb

Please sign in to comment.