]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
x86/mm: Cleanup the control_va_addr_alignment() __setup handler
authorRandy Dunlap <rdunlap@infradead.org>
Tue, 15 Mar 2022 00:10:45 +0000 (17:10 -0700)
committerBorislav Petkov <bp@suse.de>
Wed, 4 May 2022 16:20:42 +0000 (18:20 +0200)
Clean up control_va_addr_alignment():

a. Make '=' required instead of optional (as documented).
b. Print a warning if an invalid option value is used.
c. Return 1 from the __setup handler when an invalid option value is
   used. This prevents the kernel from polluting init's (limited)
   environment space with the entire string.

Fixes: dfb09f9b7ab0 ("x86, amd: Avoid cache aliasing penalties on AMD family 15h")
Reported-by: Igor Zhbanov <i.zhbanov@omprussia.ru>
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru
Link: https://lore.kernel.org/r/20220315001045.7680-1-rdunlap@infradead.org
arch/x86/kernel/sys_x86_64.c

index 660b78827638fd946ed2d538c30d1896eb9156d8..8cc653ffdccd72904b14225fc1e0bb57f17e7eb7 100644 (file)
@@ -68,9 +68,6 @@ static int __init control_va_addr_alignment(char *str)
        if (*str == 0)
                return 1;
 
-       if (*str == '=')
-               str++;
-
        if (!strcmp(str, "32"))
                va_align.flags = ALIGN_VA_32;
        else if (!strcmp(str, "64"))
@@ -80,11 +77,11 @@ static int __init control_va_addr_alignment(char *str)
        else if (!strcmp(str, "on"))
                va_align.flags = ALIGN_VA_32 | ALIGN_VA_64;
        else
-               return 0;
+               pr_warn("invalid option value: 'align_va_addr=%s'\n", str);
 
        return 1;
 }
-__setup("align_va_addr", control_va_addr_alignment);
+__setup("align_va_addr=", control_va_addr_alignment);
 
 SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len,
                unsigned long, prot, unsigned long, flags,