Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fbb01c52 authored by Joe Lawrence's avatar Joe Lawrence Committed by Shuah Khan
Browse files

selftests/livepatch: push and pop dynamic debug config



The livepatching self-tests tweak the dynamic debug config to verify
the kernel log during the tests.  Enhance set_dynamic_debug() so that
the config changes are restored when the script exits.

Note this functionality needs to keep in sync with:
  - dynamic_debug input/output formatting
  - functions affected by set_dynamic_debug()

  For example, push_dynamic_debug() transforms:
    kernel/livepatch/transition.c:530 [livepatch]klp_init_transition =_ "'%s': initializing %s transition\012"
  to the following:
    file kernel/livepatch/transition.c line 530 =_

Signed-off-by: default avatarJoe Lawrence <joe.lawrence@redhat.com>
Tested-by: default avatarPetr Mladek <pmladek@suse.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent fc2e634e
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -29,10 +29,24 @@ function die() {
	exit 1
}

# set_dynamic_debug() - setup kernel dynamic debug
#	TODO - push and pop this config?
function push_dynamic_debug() {
        DYNAMIC_DEBUG=$(grep '^kernel/livepatch' /sys/kernel/debug/dynamic_debug/control | \
                awk -F'[: ]' '{print "file " $1 " line " $2 " " $4}')
}

function pop_dynamic_debug() {
	if [[ -n "$DYNAMIC_DEBUG" ]]; then
		echo -n "$DYNAMIC_DEBUG" > /sys/kernel/debug/dynamic_debug/control
	fi
}

# set_dynamic_debug() - save the current dynamic debug config and tweak
# 			it for the self-tests.  Set a script exit trap
#			that restores the original config.
function set_dynamic_debug() {
	cat << EOF > /sys/kernel/debug/dynamic_debug/control
        push_dynamic_debug
        trap pop_dynamic_debug EXIT INT TERM HUP
        cat <<-EOF > /sys/kernel/debug/dynamic_debug/control
		file kernel/livepatch/* +p
		func klp_try_switch_task -p
		EOF