Message ID | 20190917010752.28395-3-alastair@au1.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add bounds check for Hotplugged memory | expand |
On 17.09.19 03:07, Alastair D'Silva wrote: > From: Alastair D'Silva <alastair@d-silva.org> > > The call to check_hotplug_memory_addressable() validates that the memory > is fully addressable. > > Without this call, it is possible that we may remap pages that is > not physically addressable, resulting in bogus section numbers > being returned from __section_nr(). > > Signed-off-by: Alastair D'Silva <alastair@d-silva.org> > --- > mm/memremap.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/mm/memremap.c b/mm/memremap.c > index 86432650f829..de2b67586401 100644 > --- a/mm/memremap.c > +++ b/mm/memremap.c > @@ -175,6 +175,11 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) > int error, nid, is_ram; > bool need_devmap_managed = true; > > + error = check_hotplug_memory_addressable(res->start, > + resource_size(res)); > + if (error) > + return ERR_PTR(error); > + > switch (pgmap->type) { > case MEMORY_DEVICE_PRIVATE: > if (!IS_ENABLED(CONFIG_DEVICE_PRIVATE)) { > Acked-by: David Hildenbrand <david@redhat.com>
diff --git a/mm/memremap.c b/mm/memremap.c index 86432650f829..de2b67586401 100644 --- a/mm/memremap.c +++ b/mm/memremap.c @@ -175,6 +175,11 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) int error, nid, is_ram; bool need_devmap_managed = true; + error = check_hotplug_memory_addressable(res->start, + resource_size(res)); + if (error) + return ERR_PTR(error); + switch (pgmap->type) { case MEMORY_DEVICE_PRIVATE: if (!IS_ENABLED(CONFIG_DEVICE_PRIVATE)) {