Patch "mm/memory_hotplug: fix error handling in add_memory_resource()" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    mm/memory_hotplug: fix error handling in add_memory_resource()

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     mm-memory_hotplug-fix-error-handling-in-add_memory_r.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 9345b30fdfb2604449065987afce0aa558347408
Author: Sumanth Korikkar <sumanthk@xxxxxxxxxxxxx>
Date:   Mon Nov 20 15:53:53 2023 +0100

    mm/memory_hotplug: fix error handling in add_memory_resource()
    
    [ Upstream commit f42ce5f087eb69e47294ababd2e7e6f88a82d308 ]
    
    In add_memory_resource(), creation of memory block devices occurs after
    successful call to arch_add_memory().  However, creation of memory block
    devices could fail.  In that case, arch_remove_memory() is called to
    perform necessary cleanup.
    
    Currently with or without altmap support, arch_remove_memory() is always
    passed with altmap set to NULL during error handling.  This leads to
    freeing of struct pages using free_pages(), eventhough the allocation
    might have been performed with altmap support via
    altmap_alloc_block_buf().
    
    Fix the error handling by passing altmap in arch_remove_memory(). This
    ensures the following:
    * When altmap is disabled, deallocation of the struct pages array occurs
      via free_pages().
    * When altmap is enabled, deallocation occurs via vmem_altmap_free().
    
    Link: https://lkml.kernel.org/r/20231120145354.308999-3-sumanthk@xxxxxxxxxxxxx
    Fixes: a08a2ae34613 ("mm,memory_hotplug: allocate memmap from the added memory range")
    Signed-off-by: Sumanth Korikkar <sumanthk@xxxxxxxxxxxxx>
    Reviewed-by: Gerald Schaefer <gerald.schaefer@xxxxxxxxxxxxx>
    Acked-by: David Hildenbrand <david@xxxxxxxxxx>
    Cc: Alexander Gordeev <agordeev@xxxxxxxxxxxxx>
    Cc: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxx>
    Cc: Anshuman Khandual <anshuman.khandual@xxxxxxx>
    Cc: Heiko Carstens <hca@xxxxxxxxxxxxx>
    Cc: kernel test robot <lkp@xxxxxxxxx>
    Cc: Michal Hocko <mhocko@xxxxxxxx>
    Cc: Oscar Salvador <osalvador@xxxxxxx>
    Cc: Vasily Gorbik <gor@xxxxxxxxxxxxx>
    Cc: <stable@xxxxxxxxxxxxxxx>    [5.15+]
    Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index d02722bbfcf33..3b9d3a4b43869 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1382,7 +1382,7 @@ int __ref add_memory_resource(int nid, struct resource *res, mhp_t mhp_flags)
 	ret = create_memory_block_devices(start, size, mhp_altmap.alloc,
 					  group);
 	if (ret) {
-		arch_remove_memory(start, size, NULL);
+		arch_remove_memory(start, size, params.altmap);
 		goto error;
 	}
 




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux