lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 31 Aug 2018 09:51:07 +0200 From: David Hildenbrand <david@...hat.com> To: Pasha Tatashin <Pavel.Tatashin@...rosoft.com>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org> Cc: "linux-mm@...ck.org" <linux-mm@...ck.org>, Andrew Morton <akpm@...ux-foundation.org>, Michal Hocko <mhocko@...e.com>, Vlastimil Babka <vbabka@...e.cz>, Stephen Rothwell <sfr@...b.auug.org.au>, Pavel Tatashin <pasha.tatashin@...cle.com>, Kemi Wang <kemi.wang@...el.com>, David Rientjes <rientjes@...gle.com>, Jia He <jia.he@...-semitech.com>, Oscar Salvador <osalvador@...e.de>, Petr Tesarik <ptesarik@...e.com>, Andrey Ryabinin <aryabinin@...tuozzo.com>, Dan Williams <dan.j.williams@...el.com>, Mathieu Malaterre <malat@...ian.org>, Baoquan He <bhe@...hat.com>, Wei Yang <richard.weiyang@...il.com>, Ross Zwisler <zwisler@...nel.org>, "Kirill A . Shutemov" <kirill.shutemov@...ux.intel.com> Subject: Re: [PATCH v1 2/5] mm/memory_hotplug: enforce section alignment when onlining/offlining On 31.08.2018 00:14, Pasha Tatashin wrote: > Hi David, > > I am not sure this is needed, because we already have a stricter checker: > > check_hotplug_memory_range() > > You could call it from online_pages(), if you think there is a reason to > do it, but other than that it is done from add_memory_resource() and > from remove_memory(). Hi, As offline_pages() is called from a different location for ppc (and I understand why but don't consider this clean) and I used both functions in a prototype, believing they would work with pageblock_nr_pages, I really think that we should at least drop the misleading check from offline_pages() and better also add checks for check_hotplug_memory_range(). Thanks for having a look Pavel! > > Thank you, > Pavel > > On 8/16/18 6:06 AM, David Hildenbrand wrote: >> onlining/offlining code works on whole sections, so let's enforce that. >> Existing code only allows to add memory in memory block size. And only >> whole memory blocks can be onlined/offlined. Memory blocks are always >> aligned to sections, so this should not break anything. >> >> online_pages/offline_pages will implicitly mark whole sections >> online/offline, so the code really can only handle such granularities. >> >> (especially offlining code cannot deal with pageblock_nr_pages but >> theoretically only MAX_ORDER-1) >> >> Signed-off-by: David Hildenbrand <david@...hat.com> >> --- >> mm/memory_hotplug.c | 10 +++++++--- >> 1 file changed, 7 insertions(+), 3 deletions(-) >> >> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >> index 090cf474de87..30d2fa42b0bb 100644 >> --- a/mm/memory_hotplug.c >> +++ b/mm/memory_hotplug.c >> @@ -897,6 +897,11 @@ int __ref online_pages(unsigned long pfn, unsigned long nr_pages, int online_typ >> struct memory_notify arg; >> struct memory_block *mem; >> >> + if (!IS_ALIGNED(pfn, PAGES_PER_SECTION)) >> + return -EINVAL; >> + if (!IS_ALIGNED(nr_pages, PAGES_PER_SECTION)) >> + return -EINVAL; >> + >> /* >> * We can't use pfn_to_nid() because nid might be stored in struct page >> * which is not yet initialized. Instead, we find nid from memory block. >> @@ -1600,10 +1605,9 @@ int offline_pages(unsigned long start_pfn, unsigned long nr_pages) >> struct zone *zone; >> struct memory_notify arg; >> >> - /* at least, alignment against pageblock is necessary */ >> - if (!IS_ALIGNED(start_pfn, pageblock_nr_pages)) >> + if (!IS_ALIGNED(start_pfn, PAGES_PER_SECTION)) >> return -EINVAL; >> - if (!IS_ALIGNED(end_pfn, pageblock_nr_pages)) >> + if (!IS_ALIGNED(nr_pages, PAGES_PER_SECTION)) >> return -EINVAL; >> /* This makes hotplug much easier...and readable. >> we assume this for now. .*/ -- Thanks, David / dhildenb
Powered by blists - more mailing lists