A possible cause might be the Bionic commit 483735440add
(mm/memory_hotplug: fix online/offline_pages called w.o.
mem_hotplug_lock) that was backported from the upstream commit
381eab4a6ee8.

It seems the location of the new call to mem_hotplug_being() was
shifted:

-->8--
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 6cd0c4a144d5..7dd8b84ea849 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -891,6 +891,8 @@ int __ref online_pages(unsigned long pfn, unsigned long 
nr_pages, int online_typ
        int ret;
        struct memory_notify arg;
 
+       mem_hotplug_begin();
+
        nid = pfn_to_nid(pfn);
        /* associate pfn range with the zone */
        zone = move_pfn_range(online_type, nid, pfn, nr_pages);
@@ -904,8 +906,6 @@ int __ref online_pages(unsigned long pfn, unsigned long 
nr_pages, int online_typ
        if (ret)
                goto failed_addition;
 
-       mem_hotplug_begin();
-
        /*
         * If this zone is not populated, then it is not in zonelist.
         * This means the page allocator ignores this zone.
@@ -1178,9 +1178,7 @@ int __ref add_memory_resource(int nid, struct resource 
*res, bool online)
                walk_memory_range(PFN_DOWN(start), PFN_UP(start + size - 1),
                                  NULL, online_memory_block);
 
-
        return ret;
-
 error:
        /* rollback pgdat allocation and others */
        if (new_pgdat && pgdat)
-->8--

I will build a test kernel with this change to test it.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1862312

Title:
  Segmentation fault (kernel oops) with memory-hotplug in
  ubuntu_kernel_selftests on Bionic kernel

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-kernel-tests/+bug/1862312/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to