All of lore.kernel.org
 help / color / mirror / Atom feed
From: wency@cn.fujitsu.com
To: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-acpi@vger.kernel.org,
	linux-s390@vger.kernel.org, linux-sh@vger.kernel.org,
	linux-ia64@vger.kernel.org, cmetcalf@tilera.com
Cc: rientjes@google.com, liuj97@gmail.com, len.brown@intel.com,
	benh@kernel.crashing.org, paulus@samba.org, cl@linux.com,
	minchan.kim@gmail.com, akpm@linux-foundation.org,
	kosaki.motohiro@jp.fujitsu.com, isimatu.yasuaki@jp.fujitsu.com,
	Wen Congyang <wency@cn.fujitsu.com>
Subject: [RFC PATCH V6 13/19] memory-hotplug: check page type in get_page_bootmem
Date: Fri, 03 Aug 2012 07:49:15 +0000	[thread overview]
Message-ID: <1343980161-14254-14-git-send-email-wency@cn.fujitsu.com> (raw)
In-Reply-To: <1343980161-14254-1-git-send-email-wency@cn.fujitsu.com>

From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>

There is a possibility that get_page_bootmem() is called to the same page many
times. So when get_page_bootmem is called to the same page, the function only
increments page->_count.

CC: David Rientjes <rientjes@google.com>
CC: Jiang Liu <liuj97@gmail.com>
CC: Len Brown <len.brown@intel.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: Paul Mackerras <paulus@samba.org>
CC: Christoph Lameter <cl@linux.com>
Cc: Minchan Kim <minchan.kim@gmail.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
CC: Wen Congyang <wency@cn.fujitsu.com>
Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
---
 mm/memory_hotplug.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 5f9f8c7..710e593 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -95,10 +95,17 @@ static void release_memory_resource(struct resource *res)
 static void get_page_bootmem(unsigned long info,  struct page *page,
 			     unsigned long type)
 {
-	page->lru.next = (struct list_head *) type;
-	SetPagePrivate(page);
-	set_page_private(page, info);
-	atomic_inc(&page->_count);
+	unsigned long page_type;
+
+	page_type = (unsigned long) page->lru.next;
+	if (type < MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE ||
+	    type > MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE){
+		page->lru.next = (struct list_head *) type;
+		SetPagePrivate(page);
+		set_page_private(page, info);
+		atomic_inc(&page->_count);
+	} else
+		atomic_inc(&page->_count);
 }
 
 /* reference to __meminit __free_pages_bootmem is valid
-- 
1.7.1


WARNING: multiple messages have this Message-ID (diff)
From: wency@cn.fujitsu.com
To: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-acpi@vger.kernel.org,
	linux-s390@vger.kernel.org, linux-sh@vger.kernel.org,
	linux-ia64@vger.kernel.org, cmetcalf@tilera.com
Cc: rientjes@google.com, liuj97@gmail.com, len.brown@intel.com,
	benh@kernel.crashing.org, paulus@samba.org, cl@linux.com,
	minchan.kim@gmail.com, akpm@linux-foundation.org,
	kosaki.motohiro@jp.fujitsu.com, isimatu.yasuaki@jp.fujitsu.com,
	Wen Congyang <wency@cn.fujitsu.com>
Subject: [RFC PATCH V6 13/19] memory-hotplug: check page type in get_page_bootmem
Date: Fri, 3 Aug 2012 15:49:15 +0800	[thread overview]
Message-ID: <1343980161-14254-14-git-send-email-wency@cn.fujitsu.com> (raw)
In-Reply-To: <1343980161-14254-1-git-send-email-wency@cn.fujitsu.com>

From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>

There is a possibility that get_page_bootmem() is called to the same page many
times. So when get_page_bootmem is called to the same page, the function only
increments page->_count.

CC: David Rientjes <rientjes@google.com>
CC: Jiang Liu <liuj97@gmail.com>
CC: Len Brown <len.brown@intel.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: Paul Mackerras <paulus@samba.org>
CC: Christoph Lameter <cl@linux.com>
Cc: Minchan Kim <minchan.kim@gmail.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
CC: Wen Congyang <wency@cn.fujitsu.com>
Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
---
 mm/memory_hotplug.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 5f9f8c7..710e593 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -95,10 +95,17 @@ static void release_memory_resource(struct resource *res)
 static void get_page_bootmem(unsigned long info,  struct page *page,
 			     unsigned long type)
 {
-	page->lru.next = (struct list_head *) type;
-	SetPagePrivate(page);
-	set_page_private(page, info);
-	atomic_inc(&page->_count);
+	unsigned long page_type;
+
+	page_type = (unsigned long) page->lru.next;
+	if (type < MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE ||
+	    type > MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE){
+		page->lru.next = (struct list_head *) type;
+		SetPagePrivate(page);
+		set_page_private(page, info);
+		atomic_inc(&page->_count);
+	} else
+		atomic_inc(&page->_count);
 }
 
 /* reference to __meminit __free_pages_bootmem is valid
-- 
1.7.1

--
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: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: wency@cn.fujitsu.com
To: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-acpi@vger.kernel.org,
	linux-s390@vger.kernel.org, linux-sh@vger.kernel.org,
	linux-ia64@vger.kernel.org, cmetcalf@tilera.com
Cc: rientjes@google.com, liuj97@gmail.com, len.brown@intel.com,
	benh@kernel.crashing.org, paulus@samba.org, cl@linux.com,
	minchan.kim@gmail.com, akpm@linux-foundation.org,
	kosaki.motohiro@jp.fujitsu.com, isimatu.yasuaki@jp.fujitsu.com,
	Wen Congyang <wency@cn.fujitsu.com>
Subject: [RFC PATCH V6 13/19] memory-hotplug: check page type in get_page_bootmem
Date: Fri, 3 Aug 2012 15:49:15 +0800	[thread overview]
Message-ID: <1343980161-14254-14-git-send-email-wency@cn.fujitsu.com> (raw)
In-Reply-To: <1343980161-14254-1-git-send-email-wency@cn.fujitsu.com>

From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>

There is a possibility that get_page_bootmem() is called to the same page many
times. So when get_page_bootmem is called to the same page, the function only
increments page->_count.

CC: David Rientjes <rientjes@google.com>
CC: Jiang Liu <liuj97@gmail.com>
CC: Len Brown <len.brown@intel.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: Paul Mackerras <paulus@samba.org>
CC: Christoph Lameter <cl@linux.com>
Cc: Minchan Kim <minchan.kim@gmail.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
CC: Wen Congyang <wency@cn.fujitsu.com>
Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
---
 mm/memory_hotplug.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 5f9f8c7..710e593 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -95,10 +95,17 @@ static void release_memory_resource(struct resource *res)
 static void get_page_bootmem(unsigned long info,  struct page *page,
 			     unsigned long type)
 {
-	page->lru.next = (struct list_head *) type;
-	SetPagePrivate(page);
-	set_page_private(page, info);
-	atomic_inc(&page->_count);
+	unsigned long page_type;
+
+	page_type = (unsigned long) page->lru.next;
+	if (type < MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE ||
+	    type > MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE){
+		page->lru.next = (struct list_head *) type;
+		SetPagePrivate(page);
+		set_page_private(page, info);
+		atomic_inc(&page->_count);
+	} else
+		atomic_inc(&page->_count);
 }
 
 /* reference to __meminit __free_pages_bootmem is valid
-- 
1.7.1


WARNING: multiple messages have this Message-ID (diff)
From: wency@cn.fujitsu.com
To: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org, linux-acpi@vger.kernel.org,
	linux-s390@vger.kernel.org, linux-sh@vger.kernel.org,
	linux-ia64@vger.kernel.org, cmetcalf@tilera.com
Cc: len.brown@intel.com, Wen Congyang <wency@cn.fujitsu.com>,
	isimatu.yasuaki@jp.fujitsu.com, paulus@samba.org,
	minchan.kim@gmail.com, kosaki.motohiro@jp.fujitsu.com,
	rientjes@google.com, cl@linux.com, akpm@linux-foundation.org,
	liuj97@gmail.com
Subject: [RFC PATCH V6 13/19] memory-hotplug: check page type in get_page_bootmem
Date: Fri, 3 Aug 2012 15:49:15 +0800	[thread overview]
Message-ID: <1343980161-14254-14-git-send-email-wency@cn.fujitsu.com> (raw)
In-Reply-To: <1343980161-14254-1-git-send-email-wency@cn.fujitsu.com>

From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>

There is a possibility that get_page_bootmem() is called to the same page many
times. So when get_page_bootmem is called to the same page, the function only
increments page->_count.

CC: David Rientjes <rientjes@google.com>
CC: Jiang Liu <liuj97@gmail.com>
CC: Len Brown <len.brown@intel.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: Paul Mackerras <paulus@samba.org>
CC: Christoph Lameter <cl@linux.com>
Cc: Minchan Kim <minchan.kim@gmail.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
CC: Wen Congyang <wency@cn.fujitsu.com>
Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
---
 mm/memory_hotplug.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 5f9f8c7..710e593 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -95,10 +95,17 @@ static void release_memory_resource(struct resource *res)
 static void get_page_bootmem(unsigned long info,  struct page *page,
 			     unsigned long type)
 {
-	page->lru.next = (struct list_head *) type;
-	SetPagePrivate(page);
-	set_page_private(page, info);
-	atomic_inc(&page->_count);
+	unsigned long page_type;
+
+	page_type = (unsigned long) page->lru.next;
+	if (type < MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE ||
+	    type > MEMORY_HOTPLUG_MAX_BOOTMEM_TYPE){
+		page->lru.next = (struct list_head *) type;
+		SetPagePrivate(page);
+		set_page_private(page, info);
+		atomic_inc(&page->_count);
+	} else
+		atomic_inc(&page->_count);
 }
 
 /* reference to __meminit __free_pages_bootmem is valid
-- 
1.7.1

  parent reply	other threads:[~2012-08-03  7:49 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-03  7:49 [RFC PATCH V6 00/19] memory-hotplug: hot-remove physical memory wency
2012-08-03  7:49 ` wency
2012-08-03  7:49 ` wency
2012-08-03  7:49 ` wency
2012-08-03  7:49 ` [RFC PATCH V6 01/19] memory-hotplug: rename remove_memory() to offline_memory()/offline_pages() wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 02/19] memory-hotplug: implement offline_memory() wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 03/19] memory-hotplug: store the node id in acpi_memory_device wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 04/19] memory-hotplug: offline and remove memory when removing the memory device wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-09 15:41   ` Vasilis Liaskovitis
2012-08-09 15:41     ` Vasilis Liaskovitis
2012-08-09 15:41     ` Vasilis Liaskovitis
2012-08-09 15:41     ` Vasilis Liaskovitis
2012-08-03  7:49 ` [RFC PATCH V6 05/19] memory-hotplug: check whether memory is present or not wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 06/19] memory-hotplug: export the function acpi_bus_remove() wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 07/19] memory-hotplug: call acpi_bus_remove() to remove memory device wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 08/19] memory-hotplug: remove /sys/firmware/memmap/X sysfs wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 09/19] memory-hotplug: does not release memory region in PAGES_PER_SECTION chunks wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 10/19] memory-hotplug: add memory_block_release wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-09-06  7:06   ` wujianguo
2012-09-06  7:06     ` wujianguo
2012-09-06  7:06     ` wujianguo
2012-09-06  7:06     ` wujianguo
2012-08-03  7:49 ` [RFC PATCH V6 11/19] memory-hotplug: remove_memory calls __remove_pages wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 12/19] memory-hotplug: introduce new function arch_remove_memory() wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` wency [this message]
2012-08-03  7:49   ` [RFC PATCH V6 13/19] memory-hotplug: check page type in get_page_bootmem wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-07  5:31   ` Wen Congyang
2012-08-07  5:31     ` Wen Congyang
2012-08-07  5:31     ` Wen Congyang
2012-08-07  5:31     ` Wen Congyang
2012-08-03  7:49 ` [RFC PATCH V6 14/19] memory-hotplug: move register_page_bootmem_info_node and put_page_bootmem for s wency
2012-08-03  7:49   ` [RFC PATCH V6 14/19] memory-hotplug: move register_page_bootmem_info_node and put_page_bootmem for sparse-vmemmap wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 15/19] memory-hotplug: implement register_page_bootmem_info_section of sparse-vmemmap wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-07  3:48   ` [RFC PATCH V6 15/19] memory-hotplug: implement register_page_bootmem_info_section of sparse-vmem Wen Congyang
2012-08-07  3:48     ` [RFC PATCH V6 15/19] memory-hotplug: implement register_page_bootmem_info_section of sparse-vmemmap Wen Congyang
2012-08-07  3:48     ` Wen Congyang
2012-08-07  3:48     ` Wen Congyang
2012-08-03  7:49 ` [RFC PATCH V6 16/19] memory-hotplug: free memmap " wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-07  5:17   ` Wen Congyang
2012-08-07  5:17     ` Wen Congyang
2012-08-07  5:17     ` Wen Congyang
2012-08-07  5:17     ` Wen Congyang
2012-08-03  7:49 ` [RFC PATCH V6 17/19] memory_hotplug: clear zone when the memory is removed wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 18/19] memory-hotplug: add node_device_release wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49 ` [RFC PATCH V6 19/19] memory-hotplug: remove sysfs file of node wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency
2012-08-03  7:49   ` wency

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1343980161-14254-14-git-send-email-wency@cn.fujitsu.com \
    --to=wency@cn.fujitsu.com \
    --cc=akpm@linux-foundation.org \
    --cc=benh@kernel.crashing.org \
    --cc=cl@linux.com \
    --cc=cmetcalf@tilera.com \
    --cc=isimatu.yasuaki@jp.fujitsu.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=len.brown@intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=liuj97@gmail.com \
    --cc=minchan.kim@gmail.com \
    --cc=paulus@samba.org \
    --cc=rientjes@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.