linux/kernel
Josh Triplett ddc65971bb prctl: add PR_GET_AUXV to copy auxv to userspace
If a library wants to get information from auxv (for instance,
AT_HWCAP/AT_HWCAP2), it has a few options, none of them perfectly reliable
or ideal:

- Be main or the pre-main startup code, and grub through the stack above
  main. Doesn't work for a library.
- Call libc getauxval. Not ideal for libraries that are trying to be
  libc-independent and/or don't otherwise require anything from other
  libraries.
- Open and read /proc/self/auxv. Doesn't work for libraries that may run
  in arbitrarily constrained environments that may not have /proc
  mounted (e.g. libraries that might be used by an init program or a
  container setup tool).
- Assume you're on the main thread and still on the original stack, and
  try to walk the stack upwards, hoping to find auxv. Extremely bad
  idea.
- Ask the caller to pass auxv in for you. Not ideal for a user-friendly
  library, and then your caller may have the same problem.

Add a prctl that copies current->mm->saved_auxv to a userspace buffer.

Link: https://lkml.kernel.org/r/d81864a7f7f43bca6afa2a09fc2e850e4050ab42.1680611394.git.josh@joshtriplett.org
Signed-off-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2023-04-18 16:29:53 -07:00
..
bpf bpf: Adjust insufficient default bpf_jit_limit 2023-03-21 12:43:05 -07:00
cgroup cgroup: rename cgroup_rstat_flush_"irqsafe" to "atomic" 2023-04-18 16:29:49 -07:00
configs
debug
dma mm, treewide: redefine MAX_ORDER sanely 2023-04-05 19:42:46 -07:00
entry entry/rcu: Check TIF_RESCHED _after_ delayed RCU wake-up 2023-03-21 15:13:15 +01:00
events mm, treewide: redefine MAX_ORDER sanely 2023-04-05 19:42:46 -07:00
futex
gcov
irq A set of updates for the interrupt susbsystem: 2023-03-05 11:19:16 -08:00
kcsan kcsan: avoid passing -g for test 2023-03-23 17:18:35 -07:00
livepatch Livepatching changes for 6.3 2023-02-23 14:00:10 -08:00
locking
module modules-6.3-rc1 2023-02-23 14:05:08 -08:00
power
printk printk changes for 6.3 2023-02-23 13:49:45 -08:00
rcu
sched sched/numa: use hash_32 to mix up PIDs accessing VMA 2023-04-05 20:03:03 -07:00
time
trace Tracing fixes for 6.3: 2023-03-19 10:46:02 -07:00
.gitignore
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
Makefile
acct.c
async.c
audit.c
audit.h
audit_fsnotify.c
audit_tree.c
audit_watch.c
auditfilter.c
auditsc.c capability: just use a 'u64' instead of a 'u32[2]' array 2023-03-01 10:01:22 -08:00
backtracetest.c
bounds.c
capability.c capability: just use a 'u64' instead of a 'u32[2]' array 2023-03-01 10:01:22 -08:00
cfi.c
compat.c sched_getaffinity: don't assume 'cpumask_size()' is fully initialized 2023-03-14 19:32:38 -07:00
configs.c
context_tracking.c
cpu.c lazy tlb: introduce lazy tlb mm refcount helper functions 2023-03-28 16:20:08 -07:00
cpu_pm.c
crash_core.c mm, treewide: redefine MAX_ORDER sanely 2023-04-05 19:42:46 -07:00
crash_dump.c
cred.c
delayacct.c
dma.c
exec_domain.c
exit.c lazy tlb: introduce lazy tlb mm refcount helper functions 2023-03-28 16:20:08 -07:00
extable.c
fail_function.c
fork.c sync mm-stable with mm-hotfixes-stable to pick up depended-upon upstream changes 2023-04-18 14:53:49 -07:00
freezer.c
gen_kheaders.sh
groups.c
hung_task.c
iomem.c
irq_work.c
jump_label.c
kallsyms.c
kallsyms_internal.h
kallsyms_selftest.c
kallsyms_selftest.h
kcmp.c
kcov.c
kexec.c
kexec_core.c There is no particular theme here - mainly quick hits all over the tree. 2023-02-23 17:55:40 -08:00
kexec_elf.c
kexec_file.c
kexec_internal.h
kheaders.c
kmod.c
kprobes.c
ksysfs.c
kthread.c lazy tlb: introduce lazy tlb mm refcount helper functions 2023-03-28 16:20:08 -07:00
latencytop.c
module_signature.c
notifier.c
nsproxy.c
padata.c
panic.c panic: fix the panic_print NMI backtrace setting 2023-03-02 21:54:23 -08:00
params.c
pid.c
pid_namespace.c - Daniel Verkamp has contributed a memfd series ("mm/memfd: add 2023-02-23 17:09:35 -08:00
pid_sysctl.h
profile.c
ptrace.c
range.c
reboot.c
regset.c
relay.c
resource.c
resource_kunit.c
rseq.c
scftorture.c
scs.c
seccomp.c
signal.c
smp.c
smpboot.c
smpboot.h
softirq.c
stackleak.c
stacktrace.c
static_call.c
static_call_inline.c
stop_machine.c
sys.c prctl: add PR_GET_AUXV to copy auxv to userspace 2023-04-18 16:29:53 -07:00
sys_ni.c
sysctl-test.c
sysctl.c sysctl: fix proc_dobool() usability 2023-02-21 13:34:07 -08:00
task_work.c
taskstats.c
torture.c
tracepoint.c
tsacct.c
ucount.c
uid16.c
uid16.h
umh.c umh: simplify the capability pointer logic 2023-03-03 16:18:19 -08:00
up.c
user-return-notifier.c
user.c
user_namespace.c
usermode_driver.c
utsname.c
utsname_sysctl.c
watch_queue.c watch_queue: fix IOC_WATCH_QUEUE_SET_SIZE alloc error paths 2023-03-08 11:44:45 +01:00
watchdog.c
watchdog_hld.c
workqueue.c
workqueue_internal.h