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 <prudo(a)redhat.com>
---
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
--
2.40.1