Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752735Ab2JZJio (ORCPT ); Fri, 26 Oct 2012 05:38:44 -0400 Received: from cn.fujitsu.com ([222.73.24.84]:35566 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1750753Ab2JZJil (ORCPT ); Fri, 26 Oct 2012 05:38:41 -0400 X-IronPort-AV: E=Sophos;i="4.80,653,1344182400"; d="scan'208";a="6078242" Message-ID: <508A5B66.7000309@cn.fujitsu.com> Date: Fri, 26 Oct 2012 17:44:06 +0800 From: Wen Congyang User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100413 Fedora/3.0.4-2.fc13 Thunderbird/3.0.4 MIME-Version: 1.0 To: akpm@linux-foundation.org CC: linux-mm@kvack.org, linux-kernel@vger.kernel.org, rientjes@google.com, liuj97@gmail.com, len.brown@intel.com, benh@kernel.crashing.org, paulus@samba.org, minchan.kim@gmail.com, kosaki.motohiro@jp.fujitsu.com, isimatu.yasuaki@jp.fujitsu.com Subject: Re: [PATCH v3 4/9] clear the memory to store struct page References: <1350629202-9664-1-git-send-email-wency@cn.fujitsu.com> <1350629202-9664-5-git-send-email-wency@cn.fujitsu.com> In-Reply-To: <1350629202-9664-5-git-send-email-wency@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2012/10/26 17:37:52, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2012/10/26 17:37:53, Serialize complete at 2012/10/26 17:37:53 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4198 Lines: 84 Hi, andrew morton: This patch has been acked by kosaki motohiro. Is it OK to be merged into -mm tree? Thanks Wen Congyang At 10/19/2012 02:46 PM, wency@cn.fujitsu.com Wrote: > From: Wen Congyang > > If sparse memory vmemmap is enabled, we can't free the memory to store > struct page when a memory device is hotremoved, because we may store > struct page in the memory to manage the memory which doesn't belong > to this memory device. When we hotadded this memory device again, we > will reuse this memory to store struct page, and struct page may > contain some obsolete information, and we will get bad-page state: > > [ 59.611278] init_memory_mapping: [mem 0x80000000-0x9fffffff] > [ 59.637836] Built 2 zonelists in Node order, mobility grouping on. Total pages: 547617 > [ 59.638739] Policy zone: Normal > [ 59.650840] BUG: Bad page state in process bash pfn:9b6dc > [ 59.651124] page:ffffea0002200020 count:0 mapcount:0 mapping: (null) index:0xfdfdfdfdfdfdfdfd > [ 59.651494] page flags: 0x2fdfdfdfd5df9fd(locked|referenced|uptodate|dirty|lru|active|slab|owner_priv_1|private|private_2|writeback|head|tail|swapcache|reclaim|swapbacked|unevictable|uncached|compound_lock) > [ 59.653604] Modules linked in: netconsole acpiphp pci_hotplug acpi_memhotplug loop kvm_amd kvm microcode tpm_tis tpm tpm_bios evdev psmouse serio_raw i2c_piix4 i2c_core parport_pc parport processor button thermal_sys ext3 jbd mbcache sg sr_mod cdrom ata_generic virtio_net ata_piix virtio_blk libata virtio_pci virtio_ring virtio scsi_mod > [ 59.656998] Pid: 988, comm: bash Not tainted 3.6.0-rc7-guest #12 > [ 59.657172] Call Trace: > [ 59.657275] [] ? bad_page+0xb0/0x100 > [ 59.657434] [] ? free_pages_prepare+0xb3/0x100 > [ 59.657610] [] ? free_hot_cold_page+0x48/0x1a0 > [ 59.657787] [] ? online_pages_range+0x68/0xa0 > [ 59.657961] [] ? __online_page_increment_counters+0x10/0x10 > [ 59.658162] [] ? walk_system_ram_range+0x101/0x110 > [ 59.658346] [] ? online_pages+0x1a5/0x2b0 > [ 59.658515] [] ? __memory_block_change_state+0x20d/0x270 > [ 59.658710] [] ? store_mem_state+0xb6/0xf0 > [ 59.658878] [] ? sysfs_write_file+0xd2/0x160 > [ 59.659052] [] ? vfs_write+0xaa/0x160 > [ 59.659212] [] ? sys_write+0x47/0x90 > [ 59.659371] [] ? async_page_fault+0x25/0x30 > [ 59.659543] [] ? system_call_fastpath+0x16/0x1b > [ 59.659720] Disabling lock debugging due to kernel taint > > This patch clears the memory to store struct page to avoid unexpected error. > > CC: David Rientjes > CC: Jiang Liu > Cc: Minchan Kim > CC: Andrew Morton > CC: KOSAKI Motohiro > CC: Yasuaki Ishimatsu > Reported-by: Vasilis Liaskovitis > Signed-off-by: Wen Congyang > --- > mm/sparse.c | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/mm/sparse.c b/mm/sparse.c > index fac95f2..0021265 100644 > --- a/mm/sparse.c > +++ b/mm/sparse.c > @@ -638,7 +638,6 @@ static struct page *__kmalloc_section_memmap(unsigned long nr_pages) > got_map_page: > ret = (struct page *)pfn_to_kaddr(page_to_pfn(page)); > got_map_ptr: > - memset(ret, 0, memmap_size); > > return ret; > } > @@ -760,6 +759,8 @@ int __meminit sparse_add_one_section(struct zone *zone, unsigned long start_pfn, > goto out; > } > > + memset(memmap, 0, sizeof(struct page) * nr_pages); > + > ms->section_mem_map |= SECTION_MARKED_PRESENT; > > ret = sparse_init_one_section(ms, section_nr, memmap, usemap); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/