Messages in this thread Patch in this message | | | From | David Hildenbrand <> | Subject | [PATCH RFC 1/3] mm/memory_hotplug: Simplify and fix check_hotplug_memory_range() | Date | Mon, 8 Apr 2019 12:12:24 +0200 |
| |
By converting start and size to page granularity, we actually ignore unaligned parts within a page instead of properly bailing out with an error.
Signed-off-by: David Hildenbrand <david@redhat.com> --- mm/memory_hotplug.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index f206b8b66af1..680dcc67f9d5 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1070,16 +1070,11 @@ int try_online_node(int nid) static int check_hotplug_memory_range(u64 start, u64 size) { - unsigned long block_sz = memory_block_size_bytes(); - u64 block_nr_pages = block_sz >> PAGE_SHIFT; - u64 nr_pages = size >> PAGE_SHIFT; - u64 start_pfn = PFN_DOWN(start); - /* memory range must be block size aligned */ - if (!nr_pages || !IS_ALIGNED(start_pfn, block_nr_pages) || - !IS_ALIGNED(nr_pages, block_nr_pages)) { + if (!size || !IS_ALIGNED(start, memory_block_size_bytes()) || + !IS_ALIGNED(size, memory_block_size_bytes())) { pr_err("Block size [%#lx] unaligned hotplug range: start %#llx, size %#llx", - block_sz, start, size); + memory_block_size_bytes(), start, size); return -EINVAL; } -- 2.17.2
| |