diff --git a/sys/kern/kern_mib.c b/sys/kern/kern_mib.c --- a/sys/kern/kern_mib.c +++ b/sys/kern/kern_mib.c @@ -447,6 +447,30 @@ sysctl_kern_securelvl, "I", "Current secure level"); +static int +sysctl_kern_fallback_elf_brand(SYSCTL_HANDLER_ARGS) +{ + struct prison *pr; + int error, fallback_elf_brand; + + pr = req->td->td_ucred->cr_prison; + fallback_elf_brand = pr->pr_elf_fallback_brand; + error = sysctl_handle_int(oidp, &fallback_elf_brand, 0, req); + if (error || !req->newptr) + return (error); + sx_slock(&allprison_lock); + mtx_lock(&pr->pr_mtx); + pr->pr_elf_fallback_brand = fallback_elf_brand; + mtx_unlock(&pr->pr_mtx); + sx_sunlock(&allprison_lock); + return (error); +} + +SYSCTL_PROC(_kern, OID_AUTO, fallback_elf_brand, + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_PRISON | CTLFLAG_MPSAFE, 0, 0, + sysctl_kern_fallback_elf_brand, "I", + "Current ELF ABI fallback brand"); + #ifdef INCLUDE_CONFIG_FILE /* Actual kernel configuration options. */ extern char kernconfstring[]; @@ -736,10 +760,3 @@ const int pcb_size = sizeof(struct pcb); SYSCTL_INT(_debug_sizeof, OID_AUTO, pcb, CTLFLAG_RD, SYSCTL_NULL_INT_PTR, sizeof(struct pcb), "sizeof(struct pcb)"); - -/* XXX compatibility, remove for 6.0 */ -#include -#include -SYSCTL_INT(_kern, OID_AUTO, fallback_elf_brand, CTLFLAG_RW, - &__elfN(fallback_brand), sizeof(__elfN(fallback_brand)), - "compatibility for kern.fallback_elf_brand");