Blame SOURCES/0004-kpatch-clarify-unload-unsupport.patch

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