mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	 05564c29fc
			
		
	
	
		05564c29fc
		
	
	
	
	
		
			
			livepatch test configures the system and debug environment to run tests. Some of these actions fail without root access and test dumps several permission denied messages before it exits. Fix test-state.sh to call setup_config instead of set_dynamic_debug as suggested by Petr Mladek <pmladek@suse.com> Fix it to check root uid and exit with skip code instead. Signed-off-by: Shuah Khan <skhan@linuxfoundation.org> Acked-by: Joe Lawrence <joe.lawrence@redhat.com> Reviewed-by: Petr Mladek <pmladek@suse.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
		
			
				
	
	
		
			179 lines
		
	
	
	
		
			7.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
	
		
			7.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/bash
 | |
| # SPDX-License-Identifier: GPL-2.0
 | |
| # Copyright (C) 2019 SUSE
 | |
| 
 | |
| . $(dirname $0)/functions.sh
 | |
| 
 | |
| MOD_LIVEPATCH=test_klp_state
 | |
| MOD_LIVEPATCH2=test_klp_state2
 | |
| MOD_LIVEPATCH3=test_klp_state3
 | |
| 
 | |
| setup_config
 | |
| 
 | |
| # TEST: Loading and removing a module that modifies the system state
 | |
| 
 | |
| echo -n "TEST: system state modification ... "
 | |
| dmesg -C
 | |
| 
 | |
| load_lp $MOD_LIVEPATCH
 | |
| disable_lp $MOD_LIVEPATCH
 | |
| unload_lp $MOD_LIVEPATCH
 | |
| 
 | |
| check_result "% modprobe $MOD_LIVEPATCH
 | |
| livepatch: enabling patch '$MOD_LIVEPATCH'
 | |
| livepatch: '$MOD_LIVEPATCH': initializing patching transition
 | |
| $MOD_LIVEPATCH: pre_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH: allocate_loglevel_state: allocating space to store console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH': starting patching transition
 | |
| livepatch: '$MOD_LIVEPATCH': completing patching transition
 | |
| $MOD_LIVEPATCH: post_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH: fix_console_loglevel: fixing console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH': patching complete
 | |
| % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
 | |
| livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
 | |
| $MOD_LIVEPATCH: pre_unpatch_callback: vmlinux
 | |
| $MOD_LIVEPATCH: restore_console_loglevel: restoring console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH': starting unpatching transition
 | |
| livepatch: '$MOD_LIVEPATCH': completing unpatching transition
 | |
| $MOD_LIVEPATCH: post_unpatch_callback: vmlinux
 | |
| $MOD_LIVEPATCH: free_loglevel_state: freeing space for the stored console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH': unpatching complete
 | |
| % rmmod $MOD_LIVEPATCH"
 | |
| 
 | |
| 
 | |
| # TEST: Take over system state change by a cumulative patch
 | |
| 
 | |
| echo -n "TEST: taking over system state modification ... "
 | |
| dmesg -C
 | |
| 
 | |
| load_lp $MOD_LIVEPATCH
 | |
| load_lp $MOD_LIVEPATCH2
 | |
| unload_lp $MOD_LIVEPATCH
 | |
| disable_lp $MOD_LIVEPATCH2
 | |
| unload_lp $MOD_LIVEPATCH2
 | |
| 
 | |
| check_result "% modprobe $MOD_LIVEPATCH
 | |
| livepatch: enabling patch '$MOD_LIVEPATCH'
 | |
| livepatch: '$MOD_LIVEPATCH': initializing patching transition
 | |
| $MOD_LIVEPATCH: pre_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH: allocate_loglevel_state: allocating space to store console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH': starting patching transition
 | |
| livepatch: '$MOD_LIVEPATCH': completing patching transition
 | |
| $MOD_LIVEPATCH: post_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH: fix_console_loglevel: fixing console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH': patching complete
 | |
| % modprobe $MOD_LIVEPATCH2
 | |
| livepatch: enabling patch '$MOD_LIVEPATCH2'
 | |
| livepatch: '$MOD_LIVEPATCH2': initializing patching transition
 | |
| $MOD_LIVEPATCH2: pre_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: allocate_loglevel_state: space to store console_loglevel already allocated
 | |
| livepatch: '$MOD_LIVEPATCH2': starting patching transition
 | |
| livepatch: '$MOD_LIVEPATCH2': completing patching transition
 | |
| $MOD_LIVEPATCH2: post_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: fix_console_loglevel: taking over the console_loglevel change
 | |
| livepatch: '$MOD_LIVEPATCH2': patching complete
 | |
| % rmmod $MOD_LIVEPATCH
 | |
| % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH2/enabled
 | |
| livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition
 | |
| $MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: restore_console_loglevel: restoring console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH2': starting unpatching transition
 | |
| livepatch: '$MOD_LIVEPATCH2': completing unpatching transition
 | |
| $MOD_LIVEPATCH2: post_unpatch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: free_loglevel_state: freeing space for the stored console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH2': unpatching complete
 | |
| % rmmod $MOD_LIVEPATCH2"
 | |
| 
 | |
| 
 | |
| # TEST: Take over system state change by a cumulative patch
 | |
| 
 | |
| echo -n "TEST: compatible cumulative livepatches ... "
 | |
| dmesg -C
 | |
| 
 | |
| load_lp $MOD_LIVEPATCH2
 | |
| load_lp $MOD_LIVEPATCH3
 | |
| unload_lp $MOD_LIVEPATCH2
 | |
| load_lp $MOD_LIVEPATCH2
 | |
| disable_lp $MOD_LIVEPATCH2
 | |
| unload_lp $MOD_LIVEPATCH2
 | |
| unload_lp $MOD_LIVEPATCH3
 | |
| 
 | |
| check_result "% modprobe $MOD_LIVEPATCH2
 | |
| livepatch: enabling patch '$MOD_LIVEPATCH2'
 | |
| livepatch: '$MOD_LIVEPATCH2': initializing patching transition
 | |
| $MOD_LIVEPATCH2: pre_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: allocate_loglevel_state: allocating space to store console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH2': starting patching transition
 | |
| livepatch: '$MOD_LIVEPATCH2': completing patching transition
 | |
| $MOD_LIVEPATCH2: post_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: fix_console_loglevel: fixing console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH2': patching complete
 | |
| % modprobe $MOD_LIVEPATCH3
 | |
| livepatch: enabling patch '$MOD_LIVEPATCH3'
 | |
| livepatch: '$MOD_LIVEPATCH3': initializing patching transition
 | |
| $MOD_LIVEPATCH3: pre_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH3: allocate_loglevel_state: space to store console_loglevel already allocated
 | |
| livepatch: '$MOD_LIVEPATCH3': starting patching transition
 | |
| livepatch: '$MOD_LIVEPATCH3': completing patching transition
 | |
| $MOD_LIVEPATCH3: post_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH3: fix_console_loglevel: taking over the console_loglevel change
 | |
| livepatch: '$MOD_LIVEPATCH3': patching complete
 | |
| % rmmod $MOD_LIVEPATCH2
 | |
| % modprobe $MOD_LIVEPATCH2
 | |
| livepatch: enabling patch '$MOD_LIVEPATCH2'
 | |
| livepatch: '$MOD_LIVEPATCH2': initializing patching transition
 | |
| $MOD_LIVEPATCH2: pre_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: allocate_loglevel_state: space to store console_loglevel already allocated
 | |
| livepatch: '$MOD_LIVEPATCH2': starting patching transition
 | |
| livepatch: '$MOD_LIVEPATCH2': completing patching transition
 | |
| $MOD_LIVEPATCH2: post_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: fix_console_loglevel: taking over the console_loglevel change
 | |
| livepatch: '$MOD_LIVEPATCH2': patching complete
 | |
| % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH2/enabled
 | |
| livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition
 | |
| $MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: restore_console_loglevel: restoring console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH2': starting unpatching transition
 | |
| livepatch: '$MOD_LIVEPATCH2': completing unpatching transition
 | |
| $MOD_LIVEPATCH2: post_unpatch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: free_loglevel_state: freeing space for the stored console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH2': unpatching complete
 | |
| % rmmod $MOD_LIVEPATCH2
 | |
| % rmmod $MOD_LIVEPATCH3"
 | |
| 
 | |
| 
 | |
| # TEST: Failure caused by incompatible cumulative livepatches
 | |
| 
 | |
| echo -n "TEST: incompatible cumulative livepatches ... "
 | |
| dmesg -C
 | |
| 
 | |
| load_lp $MOD_LIVEPATCH2
 | |
| load_failing_mod $MOD_LIVEPATCH
 | |
| disable_lp $MOD_LIVEPATCH2
 | |
| unload_lp $MOD_LIVEPATCH2
 | |
| 
 | |
| check_result "% modprobe $MOD_LIVEPATCH2
 | |
| livepatch: enabling patch '$MOD_LIVEPATCH2'
 | |
| livepatch: '$MOD_LIVEPATCH2': initializing patching transition
 | |
| $MOD_LIVEPATCH2: pre_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: allocate_loglevel_state: allocating space to store console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH2': starting patching transition
 | |
| livepatch: '$MOD_LIVEPATCH2': completing patching transition
 | |
| $MOD_LIVEPATCH2: post_patch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: fix_console_loglevel: fixing console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH2': patching complete
 | |
| % modprobe $MOD_LIVEPATCH
 | |
| livepatch: Livepatch patch ($MOD_LIVEPATCH) is not compatible with the already installed livepatches.
 | |
| modprobe: ERROR: could not insert '$MOD_LIVEPATCH': Invalid argument
 | |
| % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH2/enabled
 | |
| livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition
 | |
| $MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: restore_console_loglevel: restoring console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH2': starting unpatching transition
 | |
| livepatch: '$MOD_LIVEPATCH2': completing unpatching transition
 | |
| $MOD_LIVEPATCH2: post_unpatch_callback: vmlinux
 | |
| $MOD_LIVEPATCH2: free_loglevel_state: freeing space for the stored console_loglevel
 | |
| livepatch: '$MOD_LIVEPATCH2': unpatching complete
 | |
| % rmmod $MOD_LIVEPATCH2"
 | |
| 
 | |
| exit 0
 |