From f96172d3533c59571b04805c89f8fb1fa944adf1 Mon Sep 17 00:00:00 2001 From: Pingfan Liu Date: Wed, 29 Jul 2020 15:52:21 +0800 Subject: [PATCH] kdumpctl: exit if either pre.d or post.d is missing It is hard to detect the time that /etc/kdump is removed. And this failure may cause out-of-date kdump.initrd. To keep things simple, just exit if /etc/kdump/pre.d and post.d does not exist. Signed-off-by: Pingfan Liu Acked-by: Kairui Song --- kdump.conf | 12 +++++------- kdump.conf.5 | 12 +++++------- kdumpctl | 6 +++--- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/kdump.conf b/kdump.conf index 9f35e31..9fc0a4f 100644 --- a/kdump.conf +++ b/kdump.conf @@ -79,10 +79,9 @@ # or script after the vmcore dump process terminates. # The exit status of the current dump process is fed to # the executable binary or script as its first argument. -# If /etc/kdump/post.d directory exists, all files in -# the directory are collectively sorted and executed in -# lexical order, before binary or script specified -# kdump_post parameter is executed. +# All files under /etc/kdump/post.d are collectively sorted +# and executed in lexical order, before binary or script +# specified kdump_post parameter is executed. # # kdump_pre # - Works like the "kdump_post" directive, but instead of running @@ -90,9 +89,8 @@ # Exit status of this binary is interpreted as follows: # 0 - continue with dump process as usual # non 0 - run the final action (reboot/poweroff/halt) -# If /etc/kdump/pre.d directory exists, all files in -# the directory are collectively sorted and executed in -# lexical order, after binary or script specified +# All files under /etc/kdump/pre.d are collectively sorted and +# executed in lexical order, after binary or script specified # kdump_pre parameter is executed. # Even if the binary or script in /etc/kdump/pre.d directory # returns non 0 exit status, the processing is continued. diff --git a/kdump.conf.5 b/kdump.conf.5 index c362963..34c996c 100644 --- a/kdump.conf.5 +++ b/kdump.conf.5 @@ -109,10 +109,9 @@ status of the current dump process is fed to the kdump_post executable as its first argument($1). Executable can modify it to indicate the new exit status of succeeding dump process, .PP -If /etc/kdump/post.d directory exists, All files in -the directory are collectively sorted and executed in -lexical order, before binary or script specified -kdump_post parameter is executed. +All files under /etc/kdump/post.d are collectively sorted +and executed in lexical order, before binary or script +specified kdump_post parameter is executed. .PP Note that scripts written for use with this directive must use the /bin/bash interpreter. @@ -129,9 +128,8 @@ as follows: .PP non 0 - run the final action (reboot/poweroff/halt) .PP -If /etc/kdump/pre.d directory exists, all files in -the directory are collectively sorted and executed in -lexical order, after binary or script specified +All files under /etc/kdump/pre.d are collectively sorted and +executed in lexical order, after binary or script specified kdump_pre parameter is executed. Even if the binary or script in /etc/kdump/pre.d directory returns non 0 exit status, the processing is continued. diff --git a/kdumpctl b/kdumpctl index 42c11d3..122e065 100755 --- a/kdumpctl +++ b/kdumpctl @@ -151,7 +151,7 @@ rebuild_initrd() check_exist() { for file in $1; do - if [ ! -f "$file" ]; then + if [ ! -e "$file" ]; then echo -n "Error: $file not found."; echo return 1 fi @@ -385,11 +385,11 @@ check_files_modified() done fi + # HOOKS is mandatory and need to check the modification time + files="$files $HOOKS" check_exist "$files" && check_executable "$EXTRA_BINS" [ $? -ne 0 ] && return 2 - # HOOKS only need to check the modification here - files="$files $HOOKS" for file in $files; do if [ -e "$file" ]; then time_stamp=`stat -c "%Y" $file`