At 08/03/2012 03:49 PM, [email protected] Wrote: > From: Yasuaki Ishimatsu <[email protected]> > > 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 <[email protected]> > CC: Jiang Liu <[email protected]> > CC: Len Brown <[email protected]> > CC: Benjamin Herrenschmidt <[email protected]> > CC: Paul Mackerras <[email protected]> > CC: Christoph Lameter <[email protected]> > Cc: Minchan Kim <[email protected]> > CC: Andrew Morton <[email protected]> > CC: KOSAKI Motohiro <[email protected]> > CC: Wen Congyang <[email protected]> > Signed-off-by: Yasuaki Ishimatsu <[email protected]> > --- > 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){
I think it should be page_type not type here. Thanks Wen Congyang > + 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

