From: Damian Tometzki <damian.tometzki@gmail.com> To: David Hildenbrand <david@redhat.com> Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-ia64@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, x86@kernel.org, "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>, Dan Williams <dan.j.williams@intel.com>, Andrew Morton <akpm@linux-foundation.org>, Jason Gunthorpe <jgg@ziepe.ca>, Logan Gunthorpe <logang@deltatee.com>, Ira Weiny <ira.weiny@intel.com> Subject: Re: [PATCH v6 01/10] mm/memunmap: Don't access uninitialized memmap in memunmap_pages() Date: Sun, 6 Oct 2019 21:58:39 +0200 Message-ID: <20191006195838.GA27160@freebsd.route53-aws-cloud.de> (raw) In-Reply-To: <20191006085646.5768-2-david@redhat.com> Hello David, patch 05/10 is missing in the patch series. On Sun, 06. Oct 10:56, David Hildenbrand wrote: > From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com> > > With an altmap, the memmap falling into the reserved altmap space are > not initialized and, therefore, contain a garbage NID and a garbage > zone. Make sure to read the NID/zone from a memmap that was initialzed. > > This fixes a kernel crash that is observed when destroying a namespace: > > [ 81.356173] kernel BUG at include/linux/mm.h:1107! > cpu 0x1: Vector: 700 (Program Check) at [c000000274087890] > pc: c0000000004b9728: memunmap_pages+0x238/0x340 > lr: c0000000004b9724: memunmap_pages+0x234/0x340 > ... > pid = 3669, comm = ndctl > kernel BUG at include/linux/mm.h:1107! > [c000000274087ba0] c0000000009e3500 devm_action_release+0x30/0x50 > [c000000274087bc0] c0000000009e4758 release_nodes+0x268/0x2d0 > [c000000274087c30] c0000000009dd144 device_release_driver_internal+0x174/0x240 > [c000000274087c70] c0000000009d9dfc unbind_store+0x13c/0x190 > [c000000274087cb0] c0000000009d8a24 drv_attr_store+0x44/0x60 > [c000000274087cd0] c0000000005a7470 sysfs_kf_write+0x70/0xa0 > [c000000274087d10] c0000000005a5cac kernfs_fop_write+0x1ac/0x290 > [c000000274087d60] c0000000004be45c __vfs_write+0x3c/0x70 > [c000000274087d80] c0000000004c26e4 vfs_write+0xe4/0x200 > [c000000274087dd0] c0000000004c2a6c ksys_write+0x7c/0x140 > [c000000274087e20] c00000000000bbd0 system_call+0x5c/0x68 > > Cc: Dan Williams <dan.j.williams@intel.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Jason Gunthorpe <jgg@ziepe.ca> > Cc: Logan Gunthorpe <logang@deltatee.com> > Cc: Ira Weiny <ira.weiny@intel.com> > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> > [ minimze code changes, rephrase description ] > Signed-off-by: David Hildenbrand <david@redhat.com> > --- > mm/memremap.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/mm/memremap.c b/mm/memremap.c > index 557e53c6fb46..8c2fb44c3b4d 100644 > --- a/mm/memremap.c > +++ b/mm/memremap.c > @@ -123,6 +123,7 @@ static void dev_pagemap_cleanup(struct dev_pagemap *pgmap) > void memunmap_pages(struct dev_pagemap *pgmap) > { > struct resource *res = &pgmap->res; > + struct page *first_page; > unsigned long pfn; > int nid; > > @@ -131,14 +132,16 @@ void memunmap_pages(struct dev_pagemap *pgmap) > put_page(pfn_to_page(pfn)); > dev_pagemap_cleanup(pgmap); > > + /* make sure to access a memmap that was actually initialized */ > + first_page = pfn_to_page(pfn_first(pgmap)); > + > /* pages are dead and unused, undo the arch mapping */ > - nid = page_to_nid(pfn_to_page(PHYS_PFN(res->start))); > + nid = page_to_nid(first_page); Why we need 'nid = page_to_nid(first_page)' we didnt use it anymore in this function ? > > mem_hotplug_begin(); > if (pgmap->type == MEMORY_DEVICE_PRIVATE) { > - pfn = PHYS_PFN(res->start); > - __remove_pages(page_zone(pfn_to_page(pfn)), pfn, > - PHYS_PFN(resource_size(res)), NULL); > + __remove_pages(page_zone(first_page), PHYS_PFN(res->start), > + PHYS_PFN(resource_size(res)), NULL); > } else { > arch_remove_memory(nid, res->start, resource_size(res), > pgmap_altmap(pgmap)); > -- > 2.21.0 > Best regards Damian
next prev parent reply index Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-10-06 8:56 [PATCH v6 00/10] mm/memory_hotplug: Shrink zones before removing memory David Hildenbrand 2019-10-06 8:56 ` [PATCH v6 01/10] mm/memunmap: Don't access uninitialized memmap in memunmap_pages() David Hildenbrand 2019-10-06 19:58 ` Damian Tometzki [this message] 2019-10-06 20:13 ` David Hildenbrand 2019-10-14 9:05 ` David Hildenbrand 2019-10-06 8:56 ` [PATCH v6 02/10] mm/memmap_init: Update variable name in memmap_init_zone David Hildenbrand 2019-10-06 8:56 ` [PATCH v6 03/10] mm/memory_hotplug: Don't access uninitialized memmaps in shrink_pgdat_span() David Hildenbrand 2019-10-14 9:31 ` David Hildenbrand 2019-10-06 8:56 ` [PATCH v6 04/10] mm/memory_hotplug: Don't access uninitialized memmaps in shrink_zone_span() David Hildenbrand 2019-10-14 9:32 ` David Hildenbrand 2019-10-14 19:17 ` Andrew Morton 2019-11-19 14:16 ` David Hildenbrand 2019-11-19 20:44 ` Andrew Morton 2019-10-06 8:56 ` [PATCH v6 05/10] mm/memory_hotplug: Shrink zones when offlining memory David Hildenbrand 2019-10-14 9:39 ` David Hildenbrand 2019-10-14 19:16 ` Andrew Morton 2019-10-27 22:45 ` David Hildenbrand 2019-11-30 23:21 ` Andrew Morton 2019-11-30 23:43 ` David Hildenbrand 2019-12-18 17:08 ` David Hildenbrand 2019-12-18 20:16 ` Andrew Morton 2019-12-03 15:10 ` Oscar Salvador 2019-12-03 15:27 ` David Hildenbrand 2019-10-06 8:56 ` [PATCH v6 06/10] mm/memory_hotplug: Poison memmap in remove_pfn_range_from_zone() David Hildenbrand 2019-10-16 14:01 ` David Hildenbrand 2020-02-04 8:59 ` Oscar Salvador 2019-10-06 8:56 ` [PATCH v6 07/10] mm/memory_hotplug: We always have a zone in find_(smallest|biggest)_section_pfn David Hildenbrand 2020-02-04 9:06 ` Oscar Salvador 2020-02-05 8:57 ` Wei Yang 2020-02-05 8:59 ` David Hildenbrand 2020-02-05 9:26 ` Wei Yang 2019-10-06 8:56 ` [PATCH v6 08/10] mm/memory_hotplug: Don't check for "all holes" in shrink_zone_span() David Hildenbrand 2020-02-04 9:13 ` Oscar Salvador 2020-02-04 9:20 ` David Hildenbrand 2020-02-04 14:25 ` Baoquan He 2020-02-04 14:42 ` David Hildenbrand 2020-02-05 12:43 ` Baoquan He 2020-02-05 13:20 ` David Hildenbrand 2020-02-05 13:34 ` Baoquan He 2020-02-05 13:38 ` David Hildenbrand 2020-02-05 14:12 ` Baoquan He 2020-02-05 14:16 ` David Hildenbrand 2020-02-05 14:26 ` Baoquan He 2020-02-05 9:59 ` Wei Yang 2020-02-05 14:48 ` Baoquan He 2020-02-05 22:56 ` Wei Yang 2020-02-05 23:08 ` Baoquan He 2020-02-05 23:26 ` Wei Yang 2020-02-05 23:30 ` Baoquan He 2020-02-05 23:34 ` Wei Yang 2020-02-05 14:54 ` David Laight 2020-02-05 14:55 ` David Hildenbrand 2019-10-06 8:56 ` [PATCH v6 09/10] mm/memory_hotplug: Drop local variables " David Hildenbrand 2020-02-04 9:26 ` Oscar Salvador 2020-02-04 9:29 ` David Hildenbrand 2020-02-05 10:07 ` Wei Yang 2019-10-06 8:56 ` [PATCH v6 10/10] mm/memory_hotplug: Cleanup __remove_pages() David Hildenbrand 2020-02-04 9:46 ` Oscar Salvador 2020-02-04 12:41 ` David Hildenbrand 2020-02-04 13:13 ` Segher Boessenkool 2020-02-04 13:38 ` David Hildenbrand 2020-02-05 12:51 ` Segher Boessenkool 2020-02-05 13:17 ` David Hildenbrand 2020-02-05 13:18 ` David Hildenbrand 2020-02-05 13:23 ` David Hildenbrand 2020-02-05 11:48 ` Wei Yang 2019-12-02 9:09 ` [PATCH v6 00/10] mm/memory_hotplug: Shrink zones before removing memory David Hildenbrand 2019-12-03 13:36 ` Oscar Salvador 2020-01-31 4:40 ` Andrew Morton 2020-01-31 9:18 ` David Hildenbrand 2020-01-31 10:03 ` Michal Hocko 2020-01-31 10:36 ` David Hildenbrand 2020-02-04 1:46 ` Andrew Morton 2020-02-04 8:45 ` David Hildenbrand 2020-02-04 9:51 ` Oscar Salvador
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=20191006195838.GA27160@freebsd.route53-aws-cloud.de \ --to=damian.tometzki@gmail.com \ --cc=akpm@linux-foundation.org \ --cc=aneesh.kumar@linux.ibm.com \ --cc=dan.j.williams@intel.com \ --cc=david@redhat.com \ --cc=ira.weiny@intel.com \ --cc=jgg@ziepe.ca \ --cc=linux-arm-kernel@lists.infradead.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=logang@deltatee.com \ --cc=x86@kernel.org \ /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
Linux-mm Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-mm/0 linux-mm/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-mm linux-mm/ https://lore.kernel.org/linux-mm \ linux-mm@kvack.org public-inbox-index linux-mm Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kvack.linux-mm AGPL code for this site: git clone https://public-inbox.org/public-inbox.git