Skip to content

Commit 1168413

Browse files
sumanthkorikkarakpm00
authored andcommitted
mm/memory_hotplug: fix memmap_on_memory sysfs value retrieval
set_memmap_mode() stores the kernel parameter memmap mode as an integer. However, the get_memmap_mode() function utilizes param_get_bool() to fetch the value as a boolean, leading to potential endianness issue. On Big-endian architectures, the memmap_on_memory is consistently displayed as 'N' regardless of its actual status. To address this endianness problem, the solution involves obtaining the mode as an integer. This adjustment ensures the proper display of the memmap_on_memory parameter, presenting it as one of the following options: Force, Y, or N. Link: https://lkml.kernel.org/r/20240110140127.241451-1-sumanthk@linux.ibm.com Fixes: 2d1f649 ("mm/memory_hotplug: support memmap_on_memory when memmap is not aligned to pageblocks") Signed-off-by: Sumanth Korikkar <sumanthk@linux.ibm.com> Suggested-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com> Acked-by: David Hildenbrand <david@redhat.com> Cc: Alexander Gordeev <agordeev@linux.ibm.com> Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Cc: Heiko Carstens <hca@linux.ibm.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Oscar Salvador <osalvador@suse.de> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: <stable@vger.kernel.org> [6.6+] Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent 55f958c commit 1168413

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

mm/memory_hotplug.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,11 @@ static int set_memmap_mode(const char *val, const struct kernel_param *kp)
101101

102102
static int get_memmap_mode(char *buffer, const struct kernel_param *kp)
103103
{
104-
if (*((int *)kp->arg) == MEMMAP_ON_MEMORY_FORCE)
105-
return sprintf(buffer, "force\n");
106-
return param_get_bool(buffer, kp);
104+
int mode = *((int *)kp->arg);
105+
106+
if (mode == MEMMAP_ON_MEMORY_FORCE)
107+
return sprintf(buffer, "force\n");
108+
return sprintf(buffer, "%c\n", mode ? 'Y' : 'N');
107109
}
108110

109111
static const struct kernel_param_ops memmap_mode_ops = {

0 commit comments

Comments
 (0)