162306a36Sopenharmony_ci#!/bin/bash 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 362306a36Sopenharmony_ci# Copyright (C) 2022 Song Liu <song@kernel.org> 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci. $(dirname $0)/functions.sh 662306a36Sopenharmony_ci 762306a36Sopenharmony_ciMOD_LIVEPATCH=test_klp_livepatch 862306a36Sopenharmony_ci 962306a36Sopenharmony_cisetup_config 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci# - load a livepatch and verifies the sysfs entries work as expected 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cistart_test "sysfs test" 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciload_lp $MOD_LIVEPATCH 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cicheck_sysfs_rights "$MOD_LIVEPATCH" "" "drwxr-xr-x" 1862306a36Sopenharmony_cicheck_sysfs_rights "$MOD_LIVEPATCH" "enabled" "-rw-r--r--" 1962306a36Sopenharmony_cicheck_sysfs_value "$MOD_LIVEPATCH" "enabled" "1" 2062306a36Sopenharmony_cicheck_sysfs_rights "$MOD_LIVEPATCH" "force" "--w-------" 2162306a36Sopenharmony_cicheck_sysfs_rights "$MOD_LIVEPATCH" "transition" "-r--r--r--" 2262306a36Sopenharmony_cicheck_sysfs_value "$MOD_LIVEPATCH" "transition" "0" 2362306a36Sopenharmony_cicheck_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--" 2462306a36Sopenharmony_cicheck_sysfs_value "$MOD_LIVEPATCH" "vmlinux/patched" "1" 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cidisable_lp $MOD_LIVEPATCH 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ciunload_lp $MOD_LIVEPATCH 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_cicheck_result "% modprobe $MOD_LIVEPATCH 3162306a36Sopenharmony_cilivepatch: enabling patch '$MOD_LIVEPATCH' 3262306a36Sopenharmony_cilivepatch: '$MOD_LIVEPATCH': initializing patching transition 3362306a36Sopenharmony_cilivepatch: '$MOD_LIVEPATCH': starting patching transition 3462306a36Sopenharmony_cilivepatch: '$MOD_LIVEPATCH': completing patching transition 3562306a36Sopenharmony_cilivepatch: '$MOD_LIVEPATCH': patching complete 3662306a36Sopenharmony_ci% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled 3762306a36Sopenharmony_cilivepatch: '$MOD_LIVEPATCH': initializing unpatching transition 3862306a36Sopenharmony_cilivepatch: '$MOD_LIVEPATCH': starting unpatching transition 3962306a36Sopenharmony_cilivepatch: '$MOD_LIVEPATCH': completing unpatching transition 4062306a36Sopenharmony_cilivepatch: '$MOD_LIVEPATCH': unpatching complete 4162306a36Sopenharmony_ci% rmmod $MOD_LIVEPATCH" 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_cistart_test "sysfs test object/patched" 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciMOD_LIVEPATCH=test_klp_callbacks_demo 4662306a36Sopenharmony_ciMOD_TARGET=test_klp_callbacks_mod 4762306a36Sopenharmony_ciload_lp $MOD_LIVEPATCH 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci# check the "patch" file changes as target module loads/unloads 5062306a36Sopenharmony_cicheck_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0" 5162306a36Sopenharmony_ciload_mod $MOD_TARGET 5262306a36Sopenharmony_cicheck_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "1" 5362306a36Sopenharmony_ciunload_mod $MOD_TARGET 5462306a36Sopenharmony_cicheck_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0" 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_cidisable_lp $MOD_LIVEPATCH 5762306a36Sopenharmony_ciunload_lp $MOD_LIVEPATCH 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_cicheck_result "% modprobe test_klp_callbacks_demo 6062306a36Sopenharmony_cilivepatch: enabling patch 'test_klp_callbacks_demo' 6162306a36Sopenharmony_cilivepatch: 'test_klp_callbacks_demo': initializing patching transition 6262306a36Sopenharmony_citest_klp_callbacks_demo: pre_patch_callback: vmlinux 6362306a36Sopenharmony_cilivepatch: 'test_klp_callbacks_demo': starting patching transition 6462306a36Sopenharmony_cilivepatch: 'test_klp_callbacks_demo': completing patching transition 6562306a36Sopenharmony_citest_klp_callbacks_demo: post_patch_callback: vmlinux 6662306a36Sopenharmony_cilivepatch: 'test_klp_callbacks_demo': patching complete 6762306a36Sopenharmony_ci% modprobe test_klp_callbacks_mod 6862306a36Sopenharmony_cilivepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' 6962306a36Sopenharmony_citest_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init 7062306a36Sopenharmony_citest_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init 7162306a36Sopenharmony_citest_klp_callbacks_mod: test_klp_callbacks_mod_init 7262306a36Sopenharmony_ci% rmmod test_klp_callbacks_mod 7362306a36Sopenharmony_citest_klp_callbacks_mod: test_klp_callbacks_mod_exit 7462306a36Sopenharmony_citest_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away 7562306a36Sopenharmony_cilivepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' 7662306a36Sopenharmony_citest_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away 7762306a36Sopenharmony_ci% echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled 7862306a36Sopenharmony_cilivepatch: 'test_klp_callbacks_demo': initializing unpatching transition 7962306a36Sopenharmony_citest_klp_callbacks_demo: pre_unpatch_callback: vmlinux 8062306a36Sopenharmony_cilivepatch: 'test_klp_callbacks_demo': starting unpatching transition 8162306a36Sopenharmony_cilivepatch: 'test_klp_callbacks_demo': completing unpatching transition 8262306a36Sopenharmony_citest_klp_callbacks_demo: post_unpatch_callback: vmlinux 8362306a36Sopenharmony_cilivepatch: 'test_klp_callbacks_demo': unpatching complete 8462306a36Sopenharmony_ci% rmmod test_klp_callbacks_demo" 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ciexit 0 87