At 08/03/2012 03:49 PM, we...@cn.fujitsu.com Wrote: > From: Yasuaki Ishimatsu <isimatu.yasu...@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 <rient...@google.com> > CC: Jiang Liu <liu...@gmail.com> > CC: Len Brown <len.br...@intel.com> > CC: Benjamin Herrenschmidt <b...@kernel.crashing.org> > CC: Paul Mackerras <pau...@samba.org> > CC: Christoph Lameter <c...@linux.com> > Cc: Minchan Kim <minchan....@gmail.com> > CC: Andrew Morton <a...@linux-foundation.org> > CC: KOSAKI Motohiro <kosaki.motoh...@jp.fujitsu.com> > CC: Wen Congyang <we...@cn.fujitsu.com> > Signed-off-by: Yasuaki Ishimatsu <isimatu.yasu...@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){
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 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev