Centos-kernel-stream-9/kernel
Andrew Halaney 16b2a9a32a sysctl: fix proc_dobool() usability
JIRA: https://issues.redhat.com/browse/RHEL-24205
Conflicts: Conflict due to missing cb55f27ac932
           ("fs/proc: Introduce list_for_each_table_entry for proc sysctl")

commit f1aa2eb5ea05ccd1fd92d235346e60e90a1ed949
Author: Ondrej Mosnacek <omosnace@redhat.com>
Date:   Fri Feb 10 15:58:23 2023 +0100

    sysctl: fix proc_dobool() usability

    Currently proc_dobool expects a (bool *) in table->data, but sizeof(int)
    in table->maxsize, because it uses do_proc_dointvec() directly.

    This is unsafe for at least two reasons:
    1. A sysctl table definition may use { .data = &variable, .maxsize =
       sizeof(variable) }, not realizing that this makes the sysctl unusable
       (see the Fixes: tag) and that they need to use the completely
       counterintuitive sizeof(int) instead.
    2. proc_dobool() will currently try to parse an array of values if given
       .maxsize >= 2*sizeof(int), but will try to write values of type bool
       by offsets of sizeof(int), so it will not work correctly with neither
       an (int *) nor a (bool *). There is no .maxsize validation to prevent
       this.

    Fix this by:
    1. Constraining proc_dobool() to allow only one value and .maxsize ==
       sizeof(bool).
    2. Wrapping the original struct ctl_table in a temporary one with .data
       pointing to a local int variable and .maxsize set to sizeof(int) and
       passing this one to proc_dointvec(), converting the value to/from
       bool as needed (using proc_dou8vec_minmax() as an example).
    3. Extending sysctl_check_table() to enforce proc_dobool() expectations.
    4. Fixing the proc_dobool() docstring (it was just copy-pasted from
       proc_douintvec, apparently...).
    5. Converting all existing proc_dobool() users to set .maxsize to
       sizeof(bool) instead of sizeof(int).

    Fixes: 83efeeeb3d04 ("tty: Allow TIOCSTI to be disabled")
    Fixes: a2071573d634 ("sysctl: introduce new proc handler proc_dobool")
    Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:32 -04:00
..
bpf Merge: CNB95: bpf: expose information about netdev xdp-metadata kfunc support 2024-05-08 20:17:31 +00:00
cgroup Merge: Scheduler: rhel9.5 updates 2024-05-08 20:13:47 +00:00
configs mm, slob: rename CONFIG_SLOB to CONFIG_SLOB_DEPRECATED 2024-04-09 09:42:54 -04:00
debug kdb: use srcu console list iterator 2024-05-09 11:25:20 -04:00
dma Reapply "dma-mapping: reject __GFP_COMP in dma_alloc_attrs" 2024-02-19 10:00:36 -08:00
entry entry: kmsan: introduce kmsan_unpoison_entry_regs() 2023-10-20 06:14:42 -04:00
events Merge: perf: Sync with upstream v6.8 2024-04-24 19:39:17 +00:00
futex futex: Prevent the reuse of stale pi_state 2024-03-27 10:12:24 -04:00
gcov
irq genirq, softirq: Use in_hardirq() instead of in_irq() 2024-04-05 09:49:13 -04:00
kcsan panic: Consolidate open-coded panic_on_warn checks 2024-04-09 09:43:00 -04:00
livepatch Merge: livepatch: selected fixes for rhel-9.4 2023-11-13 10:15:36 +01:00
locking locking/rtmutex: Add a lockdep assert to catch potential nested blocking 2024-03-27 10:06:01 -04:00
power power: port block device access to file 2024-04-17 10:18:36 +08:00
printk tty: serial: kgdboc: fix mutex locking order for configure_kgdboc() 2024-05-09 11:25:22 -04:00
rcu Revert "printk: Bring back the RT bits." 2024-05-09 11:24:08 -04:00
sched Merge: Scheduler: rhel9.5 updates 2024-05-08 20:13:47 +00:00
time vdso/timens: Refactor copy-pasted find_timens_vvar_page() helper into one copy 2024-03-20 09:42:49 -04:00
trace Merge: block: open block device as file 2024-04-29 14:05:40 +00:00
.gitignore
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
Makefile kernel: add platform_has() infrastructure 2024-03-20 09:42:37 -04:00
acct.c acct: use VMA iterator instead of linked list 2024-04-01 11:19:51 -04:00
async.c
audit.c audit: move trailing statements to next line 2023-12-08 13:36:23 -03:00
audit.h audit: correct audit_filter_inodes() definition 2023-12-08 13:36:03 -03:00
audit_fsnotify.c
audit_tree.c
audit_watch.c audit: don't WARN_ON_ONCE(!current->mm) in audit_exe_compare() 2023-11-21 10:44:01 +01:00
auditfilter.c audit: move trailing statements to next line 2023-12-08 13:36:23 -03:00
auditsc.c netfilter: nf_tables: Audit log rule reset 2023-12-08 13:39:15 -03:00
backtracetest.c
bounds.c mm: multi-gen LRU: minimal implementation 2023-10-20 06:13:45 -04:00
capability.c
cfi.c
compat.c sched_getaffinity: don't assume 'cpumask_size()' is fully initialized 2023-09-07 14:26:06 -04:00
configs.c
context_tracking.c
cpu.c cpu/hotplug: Remove dependancy against cpu_primary_thread_mask 2024-02-06 10:17:15 -05:00
cpu_pm.c cpuidle, cpu_pm: Remove RCU fiddling from cpu_pm_{enter,exit}() 2023-06-09 13:20:30 -04:00
crash_core.c mm, treewide: redefine MAX_ORDER sanely 2023-10-30 09:12:37 +01:00
crash_dump.c
cred.c
delayacct.c delayacct: support re-entrance detection of thrashing accounting 2023-06-14 15:11:00 -06:00
dma.c
exec_domain.c
exit.c kernel: exit: cleanup release_thread() 2024-03-20 09:42:40 -04:00
extable.c sections: move and rename core_kernel_data() to is_kernel_core_data() 2024-03-20 09:43:21 -04:00
fail_function.c
fork.c mm: remove the vma linked list 2024-04-01 11:19:57 -04:00
freezer.c
gen_kheaders.sh
groups.c
hung_task.c Revert "printk: Bring back the RT bits." 2024-05-09 11:24:08 -04:00
iomem.c
irq_work.c trace: Add trace_ipi_send_cpu() 2023-09-14 15:36:30 +02:00
jump_label.c jump_label: make initial NOP patching the special case 2024-03-20 09:43:04 -04:00
kallsyms.c
kallsyms_internal.h
kcmp.c
kcov.c kcov: kmsan: unpoison area->list in kcov_remote_area_put() 2023-10-20 06:14:40 -04:00
kexec.c
kexec_core.c kexec_file: add kexec_file flag to control debug printing 2024-04-28 21:52:02 +08:00
kexec_elf.c
kexec_file.c kexec_file: print out debugging message if required 2024-04-28 21:54:52 +08:00
kexec_internal.h
kheaders.c
kmod.c
kprobes.c x86/kprobes: Fix arch_check_optimized_kprobe check within optimized_kprobe range 2024-03-20 09:42:59 -04:00
ksysfs.c
kthread.c sched/wait: Fix a kthread_park race with wait_woken() 2023-09-07 14:30:59 -04:00
latencytop.c
module-internal.h
module.c Merge: treewide: Implement new Red Hat driver and device status infrastructure 2023-11-29 14:08:05 -05:00
module_signature.c
module_signing.c
notifier.c notifier: Add atomic_notifier_call_chain_is_empty() 2024-03-20 09:42:36 -04:00
nsproxy.c Revert "fs/exec: allow to unshare a time namespace on vfork+exec" 2023-10-20 06:13:08 -04:00
padata.c padata: Fix refcnt handling in padata_free_shell() 2023-12-06 16:23:46 -03:00
panic.c kernel/panic: Drop unblank_screen call 2024-05-09 11:25:06 -04:00
params.c kobject: kset_uevent_ops: make filter() callback take a const * 2023-10-23 10:35:56 -05:00
pid.c
pid_namespace.c rcu-tasks: Fix synchronize_rcu_tasks() VS zap_pid_ns_processes() 2023-09-22 13:21:34 -04:00
platform-feature.c kernel: add platform_has() infrastructure 2024-03-20 09:42:37 -04:00
profile.c profile: setup_profiling_timer() is moslty not implemented 2024-03-20 09:42:39 -04:00
ptrace.c ptrace: fix clearing of JOBCTL_TRACED in ptrace_unfreeze_traced() 2023-07-06 15:55:32 +02:00
range.c
reboot.c Revert "printk: Bring back the RT bits." 2024-05-09 11:24:08 -04:00
regset.c
relay.c relayfs: fix out-of-bounds access in relay_file_read 2023-07-10 12:16:49 -05:00
resource.c
resource_kunit.c
rh_messages.c kernel/rh_messages.c: Mark functions as possibly unused 2023-11-09 19:58:08 -05:00
rh_messages.h Deprecate qla4xxx in RHEL-9 2024-03-06 14:06:57 -08:00
rh_shadowman.c
rseq.c
scftorture.c
scs.c
seccomp.c
signal.c signal: Add proper comment about the preempt-disable in ptrace_stop(). 2023-11-06 12:29:40 +01:00
smp.c smp: don't declare nr_cpu_ids if NR_CPUS == 1 2024-03-20 09:42:41 -04:00
smpboot.c cpu/hotplug: Remove unused state functions 2024-02-06 10:17:13 -05:00
smpboot.h
softirq.c sched/core: introduce sched_core_idle_cpu() 2024-04-05 09:49:13 -04:00
stackleak.c
stacktrace.c
static_call.c static_call: Don't make __static_call_return0 static 2023-06-30 19:59:53 -04:00
static_call_inline.c static_call: Add call depth tracking support 2023-06-30 20:31:53 -04:00
stop_machine.c
sys.c
sys_ni.c futex: Add sys_futex_requeue() 2024-03-27 10:06:08 -04:00
sysctl-test.c
sysctl.c sysctl: fix proc_dobool() usability 2024-05-09 11:25:32 -04:00
task_work.c
taskstats.c
test_kprobes.c test_kprobes: Add recursed kprobe test case 2023-11-02 15:26:56 -06:00
torture.c
tracepoint.c
tsacct.c
ucount.c
uid16.c
uid16.h
umh.c freezer,umh: Clean up freezer/initrd interaction 2023-10-20 06:13:12 -04: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: Free the page array when watch_queue is dismantled 2023-08-17 14:10:34 +02:00
watchdog.c Revert "printk: Bring back the RT bits." 2024-05-09 11:24:08 -04:00
watchdog_hld.c Revert "printk: Bring back the RT bits." 2024-05-09 11:24:08 -04:00
workqueue.c workqueue: Avoid using isolated cpus' timers on queue_delayed_work 2024-02-22 16:47:15 -03:00
workqueue_internal.h