kpatch: clarify that "kpatch unload" isn't supported Add a user-prompt to the kpatch unload subcommand and make a similiar mention in the manual page. Provide an undocumented force option so that QE and dev scripts can still run unload kpatch modules from scripts. RHEL-only. Signed-off-by: Joe Lawrence diff -Nupr kpatch-0.6.1.old/kpatch/kpatch kpatch-0.6.1/kpatch/kpatch --- kpatch-0.6.1.old/kpatch/kpatch 2019-08-28 10:35:01.191259434 -0400 +++ kpatch-0.6.1/kpatch/kpatch 2019-08-28 16:11:13.067926576 -0400 @@ -49,8 +49,8 @@ usage () { echo >&2 usage_cmd "load --all" "load all installed patch modules into the running kernel" usage_cmd "load " "load patch module into the running kernel" - usage_cmd "unload --all" "unload all patch modules from the running kernel" - usage_cmd "unload " "unload patch module from the running kernel" + usage_cmd "unload --all (UNSUPPORTED)" "unload all patch modules from the running kernel" + usage_cmd "unload (UNSUPPORTED)" "unload patch module from the running kernel" echo >&2 usage_cmd "info " "show information about a patch module" echo >&2 @@ -71,6 +71,16 @@ die() { exit 1 } +confirm_prompt() { + local prompt="$1" + local answer + while true; do + read -rp "$prompt [Y/N] " answer + [[ $answer == 'Y' || $answer == 'y' ]] && return 0 + [[ $answer == 'N' || $answer == 'n' ]] && return 1 + done +} + __find_module () { MODULE="$1" [[ -f "$MODULE" ]] && return @@ -406,6 +416,19 @@ unset MODULE init_sysfs_var [[ "$#" -lt 1 ]] && usage + +# RHEL-specific support options +case "$1" in +"force") + # For scripting purposes, support "kpatch force unload". + # Shift out the "force" to avoid the user-prompt check below. + shift + ;; +"unload") + confirm_prompt "WARNING: Red Hat doesn't support unloading of kpatches, continue anyway?" || exit 1 + ;; +esac + case "$1" in "load") [[ "$#" -ne 2 ]] && usage diff -Nupr kpatch-0.6.1.old/man/kpatch.1 kpatch-0.6.1/man/kpatch.1 --- kpatch-0.6.1.old/man/kpatch.1 2019-08-28 10:35:01.191259434 -0400 +++ kpatch-0.6.1/man/kpatch.1 2019-08-28 14:51:23.268198897 -0400 @@ -23,10 +23,10 @@ load --all load load patch module into the running kernel -unload --all +unload --all (UNSUPPORTED) unload all patch modules from the running kernel -unload +unload (UNSUPPORTED) unload patch module from the running kernel info