From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail144.messagelabs.com (mail144.messagelabs.com [216.82.254.51]) by kanga.kvack.org (Postfix) with ESMTP id CAF116B0047 for ; Mon, 27 Sep 2010 15:23:55 -0400 (EDT) Received: from d03relay04.boulder.ibm.com (d03relay04.boulder.ibm.com [9.17.195.106]) by e38.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id o8RJG8Mi018573 for ; Mon, 27 Sep 2010 13:16:08 -0600 Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay04.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o8RJNpq1053708 for ; Mon, 27 Sep 2010 13:23:51 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id o8RJNo4S021784 for ; Mon, 27 Sep 2010 13:23:50 -0600 Message-ID: <4CA0EF45.3000601@austin.ibm.com> Date: Mon, 27 Sep 2010 14:23:49 -0500 From: Nathan Fontenot MIME-Version: 1.0 Subject: [PATCH 3/8] v2 Add mutex for adding/removing memory blocks References: <4CA0EBEB.1030204@austin.ibm.com> In-Reply-To: <4CA0EBEB.1030204@austin.ibm.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linuxppc-dev@ozlabs.org Cc: Greg KH , Dave Hansen , KAMEZAWA Hiroyuki List-ID: 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 --- drivers/base/memory.c | 7 +++++++ 1 file changed, 7 insertions(+) Index: linux-next/drivers/base/memory.c =================================================================== --- linux-next.orig/drivers/base/memory.c 2010-09-27 09:31:35.000000000 -0500 +++ linux-next/drivers/base/memory.c 2010-09-27 09:31:57.000000000 -0500 @@ -27,6 +27,8 @@ #include #include +static DEFINE_MUTEX(mem_sysfs_mutex); + #define MEMORY_CLASS_NAME "memory" static struct sysdev_class memory_sysdev_class = { @@ -476,6 +478,8 @@ if (!mem) return -ENOMEM; + mutex_lock(&mem_sysfs_mutex); + mem->phys_index = __section_nr(section); mem->state = state; atomic_inc(&mem->section_count); @@ -497,6 +501,7 @@ ret = register_mem_sect_under_node(mem, nid); } + mutex_unlock(&mem_sysfs_mutex); return ret; } @@ -505,6 +510,7 @@ { struct memory_block *mem; + mutex_lock(&mem_sysfs_mutex); mem = find_memory_block(section); if (atomic_dec_and_test(&mem->section_count)) { @@ -516,6 +522,7 @@ unregister_memory(mem, section); } + mutex_unlock(&mem_sysfs_mutex); return 0; } -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org