From ea00b7db43d12a48676f40614c2c5601a6cd34cc Mon Sep 17 00:00:00 2001 From: Philipp Rudo Date: Fri, 5 May 2023 17:14:41 +0200 Subject: [PATCH] kdumpctl: Move temp file in get_kernel_size to global temp dir Others will need to use a temporary files, too. In order to avoid potential clashes of multiple trap handlers move the local temp file into a global temp dir. While at it make sure that the trap handler returns the correct exit code. Signed-off-by: Philipp Rudo Reviewed-by: Pingfan Liu Reviewed-by: Coiby Xu --- kdump.service | 1 + kdumpctl | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/kdump.service b/kdump.service index 99feed8..15405dc 100644 --- a/kdump.service +++ b/kdump.service @@ -11,6 +11,7 @@ ExecStop=/usr/bin/kdumpctl stop ExecReload=/usr/bin/kdumpctl reload RemainAfterExit=yes StartLimitInterval=0 +PrivateTmp=yes [Install] WantedBy=multi-user.target diff --git a/kdumpctl b/kdumpctl index 6341709..ecbe0d4 100755 --- a/kdumpctl +++ b/kdumpctl @@ -45,6 +45,13 @@ if ! dlog_init; then exit 1 fi +KDUMP_TMPDIR=$(mktemp -d kdump.XXXX) +trap ' + ret=$?; + rm -rf "$KDUMP_TMPDIR" + exit $ret; + ' EXIT + _get_dracut_arg() { local shortopt longopt n tmp @@ -1193,8 +1200,7 @@ get_kernel_size() # Prepare temp files: local tmp img=$1 - tmp=$(mktemp /tmp/vmlinux-XXX) - trap 'rm -f "$tmp"' 0 + tmp="$KDUMP_TMPDIR/vmlinux" # Try to check if it's a vmlinux already check_vmlinux "$img" && get_vmlinux_size "$img" && return 0