Thread (30 messages) 30 messages, 5 authors, 2025-01-09

Re: [PATCH v4 -next 13/15] x86: vdso: move the sysctl to arch/x86/entry/vdso/vdso32-setup.c

From: yukaixiong <hidden>
Date: 2024-12-30 06:43:25
Also in: linux-fsdevel, linux-mm, linux-nfs, linux-security-module, linux-sh, lkml


On 2024/12/30 7:05, Brian Gerst wrote:
On Sat, Dec 28, 2024 at 10:17 AM Kaixiong Yu [off-list ref] wrote:
quoted
When CONFIG_X86_32 is defined and CONFIG_UML is not defined,
vdso_enabled belongs to arch/x86/entry/vdso/vdso32-setup.c.
So, move it into its own file.

Before this patch, vdso_enabled was allowed to be set to
a value exceeding 1 on x86_32 architecture. After this patch is
applied, vdso_enabled is not permitted to set the value more than 1.
It does not matter, because according to the function load_vdso32(),
only vdso_enabled is set to 1, VDSO would be enabled. Other values
all mean "disabled". The same limitation could be seen in the
function vdso32_setup().

Signed-off-by: Kaixiong Yu <redacted>
Reviewed-by: Kees Cook <kees@kernel.org>
---
v4:
  - const qualify struct ctl_table vdso_table
---
---
  arch/x86/entry/vdso/vdso32-setup.c | 16 +++++++++++-----
  kernel/sysctl.c                    |  8 +-------
  2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/arch/x86/entry/vdso/vdso32-setup.c b/arch/x86/entry/vdso/vdso32-setup.c
index 76e4e74f35b5..f71625f99bf9 100644
--- a/arch/x86/entry/vdso/vdso32-setup.c
+++ b/arch/x86/entry/vdso/vdso32-setup.c
@@ -51,15 +51,17 @@ __setup("vdso32=", vdso32_setup);
  __setup_param("vdso=", vdso_setup, vdso32_setup, 0);
  #endif

-#ifdef CONFIG_X86_64

  #ifdef CONFIG_SYSCTL
-/* Register vsyscall32 into the ABI table */
  #include <linux/sysctl.h>

-static struct ctl_table abi_table2[] = {
+static const struct ctl_table vdso_table[] = {
         {
+#ifdef CONFIG_X86_64
                 .procname       = "vsyscall32",
+#elif (defined(CONFIG_X86_32) && !defined(CONFIG_UML))
vdso32-setup,.c is not used when building UML, so this can be reduced
to "#else".
quoted
+               .procname       = "vdso_enabled",
+#endif
                 .data           = &vdso32_enabled,
                 .maxlen         = sizeof(int),
                 .mode           = 0644,
@@ -71,10 +73,14 @@ static struct ctl_table abi_table2[] = {

  static __init int ia32_binfmt_init(void)
  {
-       register_sysctl("abi", abi_table2);
+#ifdef CONFIG_X86_64
+       /* Register vsyscall32 into the ABI table */
+       register_sysctl("abi", vdso_table);
+#elif (defined(CONFIG_X86_32) && !defined(CONFIG_UML))
Same as above.


quoted
+       register_sysctl_init("vm", vdso_table);
+#endif
         return 0;
  }
  __initcall(ia32_binfmt_init);
  #endif /* CONFIG_SYSCTL */

-#endif /* CONFIG_X86_64 */
Brian Gerst
.
Hello all;

I want to confirm that I should send a new patch series, such as "PATCH 
v5 -next", or just modify this patch by
"git send-email -in-reply-to xxxxx",or the maintainer will fix this issue ?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help