kpatch: also unload a loaded, but no longer enabled kernel live patch

Currently "kpatch force unload <klp_some_version>" will fail to unload
an old kernel live patch module that is no longer seeing any use, when
the "enabled" file for that module is no longer present.

Check for the presence of such modules by checking /sys/module, and
return success from disable_patch() for a module that is already
disabled.

This allows "kpatch force unload <klp_some_version>" to succeed for
already disabled modules.

Signed-off-by: Rik van Riel <riel@surriel.com>
This commit is contained in:
Rik van Riel 2022-05-18 14:17:05 -04:00
parent 6a0dcb0da8
commit 1bf9609327
1 changed files with 6 additions and 2 deletions

View File

@ -378,8 +378,12 @@ disable_patch () {
local enabled="$SYSFS/$modname/enabled" local enabled="$SYSFS/$modname/enabled"
if ! [[ -e "$enabled" ]]; then if ! [[ -e "$enabled" ]]; then
warn "patch module $modname is not loaded" if [[ -d "/sys/module/$modname" ]] ; then
return 1 # Module is loaded, but already disabled
return 0
fi
warn "patch module $modname is not loaded"
return 1
fi fi
if [[ "$(cat "$enabled")" -eq 1 ]]; then if [[ "$(cat "$enabled")" -eq 1 ]]; then