coredump: Do not lock during 'comm' reporting
[ Upstream commit 200f091c95bbc4b8660636bd345805c45d6eced7 ]
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: Vegard Nossum <vegard.nossum@oracle.com>
Closes: https://lore.kernel.org/all/d122ece6-3606-49de-ae4d-8da88846bef2@oracle.com
Fixes: c114e9948c ("coredump: Standartize and fix logging")
Tested-by: Vegard Nossum <vegard.nossum@oracle.com>
Link: https://lore.kernel.org/r/20240928210830.work.307-kees@kernel.org
Signed-off-by: Kees Cook <kees@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d914acc16b
commit
4338831b83
@@ -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) \
|
||||
|
||||
Reference in New Issue
Block a user