Linux 6.18.31
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.18.31 kernel.
All users of the 6.18 kernel series must upgrade.
The updated 6.18.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.18.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 +- include/linux/sched.h | 3 +++ kernel/exit.c | 1 + kernel/ptrace.c | 22 ++++++++++++++++------ 4 files changed, 21 insertions(+), 7 deletions(-)
Greg Kroah-Hartman (1):
Linux 6.18.31
Linus Torvalds (1):
ptrace: slightly saner 'get_dumpable()' logic
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 18 -SUBLEVEL = 30 +SUBLEVEL = 31 EXTRAVERSION = NAME = Baby Opossum Posse
include/linux/sched.h +3 -0
@@ -1003,6 +1003,9 @@ struct task_struct { unsigned sched_rt_mutex:1;#endif +/* Save user-dumpable when mm goes away */ + unsigned user_dumpable:1; +/* Bit to tell TOMOYO we're in execve(): */ unsigned in_execve:1; unsigned in_iowait:1;
kernel/exit.c +1 -0
@@ -572,6 +572,7 @@ static void exit_mm(void)*/ smp_mb__after_spinlock ();local_irq_disable (); + current->user_dumpable = (get_dumpable (mm) ==SUID_DUMP_USER ); current->mm =NULL ;membarrier_update_current_mm (NULL );enter_lazy_tlb (mm, current);
kernel/ptrace.c +16 -6
@@ -272,11 +272,24 @@ static bool ptrace_has_cap(struct user_namespace *ns, unsigned int mode)return ns_capable (ns,CAP_SYS_PTRACE ); } +static bool task_still_dumpable (struct task_struct *task,unsigned int mode) +{ +struct mm_struct *mm = task->mm; +if (mm) { +if (get_dumpable (mm) ==SUID_DUMP_USER ) +return true; +return ptrace_has_cap (mm->user_ns, mode); + } + +if (task->user_dumpable) +return true; +return ptrace_has_cap (&init_user_ns, mode); +} +/* Returns 0 on success, -errno on denial. */ static int __ptrace_may_access (struct task_struct *task,unsigned int mode) {const struct cred *cred =current_cred (), *tcred; -struct mm_struct *mm;kuid_t caller_uid;kgid_t caller_gid;
@@ -337,11 +350,8 @@ static int __ptrace_may_access(struct task_struct *task, unsigned int mode)* Pairs with a write barrier in commit_creds(). */ smp_rmb (); - mm = task->mm; -if (mm && - ((get_dumpable (mm) !=SUID_DUMP_USER ) && - !ptrace_has_cap (mm->user_ns, mode))) -return -EPERM ; +if (!task_still_dumpable (task, mode)) +return -EPERM ;return security_ptrace_access_check (task, mode); }