Commit 200f091c authored by Kees Cook's avatar Kees Cook
Browse files

coredump: Do not lock during 'comm' reporting



The 'comm' member will always be NUL terminated, and this is not
fast-path, so we can just perform a direct memcpy during a coredump
instead of potentially deadlocking while holding the task struct lock.

Reported-by: default avatarVegard Nossum <vegard.nossum@oracle.com>
Closes: https://lore.kernel.org/all/d122ece6-3606-49de-ae4d-8da88846bef2@oracle.com


Fixes: c114e994 ("coredump: Standartize and fix logging")
Tested-by: default avatarVegard Nossum <vegard.nossum@oracle.com>
Link: https://lore.kernel.org/r/20240928210830.work.307-kees@kernel.org


Signed-off-by: default avatarKees Cook <kees@kernel.org>
parent 8cf0b939
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -52,8 +52,8 @@ extern void do_coredump(const kernel_siginfo_t *siginfo);
#define __COREDUMP_PRINTK(Level, Format, ...) \
	do {	\
		char comm[TASK_COMM_LEN];	\
	\
		get_task_comm(comm, current);	\
		/* This will always be NUL terminated. */ \
		memcpy(comm, current->comm, sizeof(comm)); \
		printk_ratelimited(Level "coredump: %d(%*pE): " Format "\n",	\
			task_tgid_vnr(current), (int)strlen(comm), comm, ##__VA_ARGS__);	\
	} while (0)	\