From 4a1c4de232af202aa5fa02c7adaa97174997ae61 Mon Sep 17 00:00:00 2001 From: Val Packett Date: Sun, 5 Feb 2023 17:52:50 -0300 Subject: Allow sysctl hw.machine/hw.machine_arch in capability mode There's no harm in reading strings like 'amd64'. Reviewed by: emaste, manu Sponsored by: https://www.patreon.com/valpackett Differential Revision: https://reviews.freebsd.org/D28703 --- sys/arm/arm/identcpu-v6.c | 2 +- sys/arm64/arm64/identcpu.c | 3 ++- sys/kern/kern_mib.c | 2 +- sys/powerpc/powerpc/machdep.c | 2 +- sys/riscv/riscv/identcpu.c | 2 +- sys/x86/x86/identcpu.c | 4 ++-- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/sys/arm/arm/identcpu-v6.c b/sys/arm/arm/identcpu-v6.c index ad23d65b6b6f..92656ca3b376 100644 --- a/sys/arm/arm/identcpu-v6.c +++ b/sys/arm/arm/identcpu-v6.c @@ -53,7 +53,7 @@ __FBSDID("$FreeBSD$"); char machine[] = "arm"; -SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, +SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD | CTLFLAG_CAPRD, machine, 0, "Machine class"); static char cpu_model[64]; diff --git a/sys/arm64/arm64/identcpu.c b/sys/arm64/arm64/identcpu.c index dadb589e9294..299d0fb0e38d 100644 --- a/sys/arm64/arm64/identcpu.c +++ b/sys/arm64/arm64/identcpu.c @@ -98,7 +98,8 @@ sysctl_hw_machine(SYSCTL_HANDLER_ARGS) } SYSCTL_PROC(_hw, HW_MACHINE, machine, CTLTYPE_STRING | CTLFLAG_RD | - CTLFLAG_MPSAFE, NULL, 0, sysctl_hw_machine, "A", "Machine class"); + CTLFLAG_CAPRD | CTLFLAG_MPSAFE, NULL, 0, sysctl_hw_machine, "A", + "Machine class"); static char cpu_model[64]; SYSCTL_STRING(_hw, HW_MODEL, model, CTLFLAG_RD, diff --git a/sys/kern/kern_mib.c b/sys/kern/kern_mib.c index 483bbe453b0c..155a81312717 100644 --- a/sys/kern/kern_mib.c +++ b/sys/kern/kern_mib.c @@ -315,7 +315,7 @@ sysctl_hw_machine_arch(SYSCTL_HANDLER_ARGS) return (SYSCTL_OUT(req, machine_arch, strlen(machine_arch) + 1)); } SYSCTL_PROC(_hw, HW_MACHINE_ARCH, machine_arch, CTLTYPE_STRING | CTLFLAG_RD | - CTLFLAG_MPSAFE, NULL, 0, sysctl_hw_machine_arch, "A", + CTLFLAG_CAPRD | CTLFLAG_MPSAFE, NULL, 0, sysctl_hw_machine_arch, "A", "System architecture"); #ifndef MACHINE_ARCHES diff --git a/sys/powerpc/powerpc/machdep.c b/sys/powerpc/powerpc/machdep.c index 84c3db924f68..8140bbd79155 100644 --- a/sys/powerpc/powerpc/machdep.c +++ b/sys/powerpc/powerpc/machdep.c @@ -155,7 +155,7 @@ static char init_kenv[2048]; static struct trapframe frame0; char machine[] = "powerpc"; -SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, machine, 0, ""); +SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD | CTLFLAG_CAPRD, machine, 0, ""); static void cpu_startup(void *); SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL); diff --git a/sys/riscv/riscv/identcpu.c b/sys/riscv/riscv/identcpu.c index 4c151eb47939..5f10ec6358ae 100644 --- a/sys/riscv/riscv/identcpu.c +++ b/sys/riscv/riscv/identcpu.c @@ -58,7 +58,7 @@ __FBSDID("$FreeBSD$"); char machine[] = "riscv"; -SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, machine, 0, +SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD | CTLFLAG_CAPRD, machine, 0, "Machine class"); /* Hardware implementation info. These values may be empty. */ diff --git a/sys/x86/x86/identcpu.c b/sys/x86/x86/identcpu.c index 70bca3559555..2a009d7ec10a 100644 --- a/sys/x86/x86/identcpu.c +++ b/sys/x86/x86/identcpu.c @@ -153,9 +153,9 @@ sysctl_hw_machine(SYSCTL_HANDLER_ARGS) } SYSCTL_PROC(_hw, HW_MACHINE, machine, CTLTYPE_STRING | CTLFLAG_RD | - CTLFLAG_MPSAFE, NULL, 0, sysctl_hw_machine, "A", "Machine class"); + CTLFLAG_CAPRD | CTLFLAG_MPSAFE, NULL, 0, sysctl_hw_machine, "A", "Machine class"); #else -SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, +SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD | CTLFLAG_CAPRD, machine, 0, "Machine class"); #endif -- cgit v1.2.3