Blame SOURCES/0003-kpatch-script-don-t-fail-if-module-already-loaded-en.patch

fa8c55
From 1d2dffec7a6fad4a8daed9340cd42aada856d03f Mon Sep 17 00:00:00 2001
fa8c55
From: Joe Lawrence <joe.lawrence@redhat.com>
fa8c55
Date: Wed, 19 Jun 2019 15:29:43 -0400
fa8c55
Subject: [PATCH] kpatch script: don't fail if module already loaded+enabled
fa8c55
fa8c55
For "kpatch load" invocations, don't set failing return status if the
fa8c55
kpatch module is already loaded and enabled.  Make note of the existing
fa8c55
livepatch module and then verify that is has completed its transition
fa8c55
before continuing.  This allows the user to more gracefully re-run
fa8c55
"kpatch load" commands to pick up new kpatch modules.
fa8c55
fa8c55
Fixes: #979
fa8c55
Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
fa8c55
---
fa8c55
 kpatch/kpatch | 44 ++++++++++++++++++++++----------------------
fa8c55
 1 file changed, 22 insertions(+), 22 deletions(-)
fa8c55
fa8c55
diff --git a/kpatch/kpatch b/kpatch/kpatch
fa8c55
index 328f1197259d..8ea6c80ca2d3 100755
fa8c55
--- a/kpatch/kpatch
fa8c55
+++ b/kpatch/kpatch
fa8c55
@@ -314,30 +314,30 @@ load_module () {
fa8c55
 				die "error: cannot re-enable patch module $modname, cannot verify checksum match"
fa8c55
 			fi
fa8c55
 		else
fa8c55
-			die "error: module named $modname already loaded and enabled"
fa8c55
+			echo "module named $modname already loaded and enabled"
fa8c55
 		fi
fa8c55
-	fi
fa8c55
+	else
fa8c55
+		echo "loading patch module: $module"
fa8c55
+		local i=0
fa8c55
+		while true; do
fa8c55
+			out="$(LC_ALL=C insmod "$module" 2>&1)"
fa8c55
+			[[ -z "$out" ]] && break
fa8c55
+			echo "$out" 1>&2
fa8c55
+			[[ ! "$out" =~ "Device or resource busy" ]] &&
fa8c55
+				die "failed to load module $module"
fa8c55
 
fa8c55
-	echo "loading patch module: $module"
fa8c55
-	local i=0
fa8c55
-	while true; do
fa8c55
-		out="$(LC_ALL=C insmod "$module" 2>&1)"
fa8c55
-		[[ -z "$out" ]] && break
fa8c55
-		echo "$out" 1>&2
fa8c55
-		[[ ! "$out" =~ "Device or resource busy" ]] &&
fa8c55
-			die "failed to load module $module"
fa8c55
-
fa8c55
-		# "Device or resource busy" means the activeness safety check
fa8c55
-		# failed.  Retry in a few seconds.
fa8c55
-		i=$((i+1))
fa8c55
-		if [[ $i -eq $MAX_LOAD_ATTEMPTS ]]; then
fa8c55
-			die "failed to load module $module"
fa8c55
-			break
fa8c55
-		else
fa8c55
-			warn "retrying..."
fa8c55
-			sleep $RETRY_INTERVAL
fa8c55
-		fi
fa8c55
-	done
fa8c55
+			# "Device or resource busy" means the activeness safety check
fa8c55
+			# failed.  Retry in a few seconds.
fa8c55
+			i=$((i+1))
fa8c55
+			if [[ $i -eq $MAX_LOAD_ATTEMPTS ]]; then
fa8c55
+				die "failed to load module $module"
fa8c55
+				break
fa8c55
+			else
fa8c55
+				warn "retrying..."
fa8c55
+				sleep $RETRY_INTERVAL
fa8c55
+			fi
fa8c55
+		done
fa8c55
+	fi
fa8c55
 
fa8c55
 	if ! wait_for_patch_transition "$modname" ; then
fa8c55
 		echo "module $modname did not complete its transition, unloading..."
fa8c55
-- 
fa8c55
2.21.0
fa8c55