Let's just warn in case a section is not valid instead of failing to
remove somewhere in the middle of the process, returning an error that
will be mostly ignored by callers.

Cc: Andrew Morton <a...@linux-foundation.org>
Cc: Oscar Salvador <osalva...@suse.de>
Cc: Michal Hocko <mho...@suse.com>
Cc: David Hildenbrand <da...@redhat.com>
Cc: Pavel Tatashin <pasha.tatas...@soleen.com>
Cc: Qian Cai <c...@lca.pw>
Cc: Wei Yang <richard.weiy...@gmail.com>
Cc: Arun KS <aru...@codeaurora.org>
Cc: Mathieu Malaterre <ma...@debian.org>
Signed-off-by: David Hildenbrand <da...@redhat.com>
---
 mm/memory_hotplug.c | 22 +++++++++-------------
 1 file changed, 9 insertions(+), 13 deletions(-)

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index b0cb05748f99..17a60281c36f 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -517,15 +517,15 @@ static void __remove_zone(struct zone *zone, unsigned 
long start_pfn)
        pgdat_resize_unlock(zone->zone_pgdat, &flags);
 }
 
-static int __remove_section(struct zone *zone, struct mem_section *ms,
-               unsigned long map_offset, struct vmem_altmap *altmap)
+static void __remove_section(struct zone *zone, struct mem_section *ms,
+                            unsigned long map_offset,
+                            struct vmem_altmap *altmap)
 {
        unsigned long start_pfn;
        int scn_nr;
-       int ret = -EINVAL;
 
-       if (!valid_section(ms))
-               return ret;
+       if (WARN_ON_ONCE(!valid_section(ms)))
+               return;
 
        unregister_memory_section(ms);
 
@@ -534,7 +534,6 @@ static int __remove_section(struct zone *zone, struct 
mem_section *ms,
        __remove_zone(zone, start_pfn);
 
        sparse_remove_one_section(zone, ms, map_offset, altmap);
-       return 0;
 }
 
 /**
@@ -554,7 +553,7 @@ int __remove_pages(struct zone *zone, unsigned long 
phys_start_pfn,
 {
        unsigned long i;
        unsigned long map_offset = 0;
-       int sections_to_remove, ret = 0;
+       int sections_to_remove;
 
        /* In the ZONE_DEVICE case device driver owns the memory region */
        if (is_dev_zone(zone)) {
@@ -575,16 +574,13 @@ int __remove_pages(struct zone *zone, unsigned long 
phys_start_pfn,
                unsigned long pfn = phys_start_pfn + i*PAGES_PER_SECTION;
 
                cond_resched();
-               ret = __remove_section(zone, __pfn_to_section(pfn), map_offset,
-                               altmap);
+               __remove_section(zone, __pfn_to_section(pfn), map_offset,
+                                altmap);
                map_offset = 0;
-               if (ret)
-                       break;
        }
 
        set_zone_contiguous(zone);
-
-       return ret;
+       return 0;
 }
 #endif /* CONFIG_MEMORY_HOTREMOVE */
 
-- 
2.17.2

Reply via email to