[ 92.988804] Running test [R:13307832 T:7 - Livepatch kselftests - Kernel: 5.14.0-247.1439_761588708.el9.x86_64] [ 108.024795] livepatch: kernel.ftrace_enabled = 1 [ 108.028710] ===== TEST: target module before livepatch ===== [ 108.042856] % modprobe test_klp_callbacks_mod [ 108.047327] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 108.056410] % modprobe test_klp_callbacks_demo [ 108.060648] test_klp_callbacks_demo: tainting kernel with TAINT_LIVEPATCH [ 108.061751] livepatch: enabling patch 'test_klp_callbacks_demo' [ 108.062690] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 108.063490] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 108.064848] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 108.066555] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 108.067369] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 108.068705] livepatch: 'test_klp_callbacks_demo': patching complete [ 108.071927] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 108.073006] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 108.073826] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 108.075176] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 108.076668] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 108.077498] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 108.078854] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 108.081197] % rmmod test_klp_callbacks_demo [ 108.091150] % rmmod test_klp_callbacks_mod [ 108.093519] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 108.110388] ===== TEST: module_coming notifier ===== [ 108.117748] % modprobe test_klp_callbacks_demo [ 108.121869] livepatch: enabling patch 'test_klp_callbacks_demo' [ 108.122757] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 108.123549] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 109.172581] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 109.173453] livepatch: 'test_klp_callbacks_demo': patching complete [ 109.267919] % modprobe test_klp_callbacks_mod [ 109.271810] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 109.273068] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 109.274618] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 109.276240] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 109.277719] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 109.278800] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 109.279623] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 109.280987] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 109.282662] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 109.283490] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 109.284839] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 109.287297] % rmmod test_klp_callbacks_demo [ 109.300091] % rmmod test_klp_callbacks_mod [ 109.302502] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 109.319457] ===== TEST: module_going notifier ===== [ 109.326493] % modprobe test_klp_callbacks_mod [ 109.330227] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 109.338067] % modprobe test_klp_callbacks_demo [ 109.342177] livepatch: enabling patch 'test_klp_callbacks_demo' [ 109.343171] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 109.343940] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 109.345267] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 110.132424] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 110.134137] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 110.135476] livepatch: 'test_klp_callbacks_demo': patching complete [ 110.172553] % rmmod test_klp_callbacks_mod [ 110.175033] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 110.175937] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 110.177279] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 110.178538] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 110.185669] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 110.186708] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 110.187520] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 111.156322] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 111.160749] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 111.204632] % rmmod test_klp_callbacks_demo [ 111.221481] ===== TEST: module_coming and module_going notifiers ===== [ 111.229280] % modprobe test_klp_callbacks_demo [ 111.233509] livepatch: enabling patch 'test_klp_callbacks_demo' [ 111.234385] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 111.235173] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 112.116144] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 112.116972] livepatch: 'test_klp_callbacks_demo': patching complete [ 112.169923] % modprobe test_klp_callbacks_mod [ 112.173673] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 112.174919] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 112.176464] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 112.178073] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 112.180911] % rmmod test_klp_callbacks_mod [ 112.183338] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 112.184253] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 112.185610] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 112.186872] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 112.195486] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 112.196572] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 112.197400] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 112.199029] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 112.199872] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 112.202247] % rmmod test_klp_callbacks_demo [ 112.222960] ===== TEST: target module not present ===== [ 112.230407] % modprobe test_klp_callbacks_demo [ 112.234580] livepatch: enabling patch 'test_klp_callbacks_demo' [ 112.235462] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 112.236250] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 113.140207] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 113.141093] livepatch: 'test_klp_callbacks_demo': patching complete [ 113.166375] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 113.167445] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 113.168285] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 114.164295] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 114.165140] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 114.187137] % rmmod test_klp_callbacks_demo [ 114.211702] ===== TEST: pre-patch callback -ENODEV ===== [ 114.219231] % modprobe test_klp_callbacks_mod [ 114.223072] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 114.224518] % modprobe test_klp_callbacks_demo pre_patch_ret=-19 [ 114.228845] livepatch: enabling patch 'test_klp_callbacks_demo' [ 114.229744] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 114.230514] livepatch: pre-patch callback failed for object 'vmlinux' [ 114.231350] livepatch: failed to enable patch 'test_klp_callbacks_demo' [ 114.232330] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 114.250308] modprobe: ERROR: could not insert 'test_klp_callbacks_demo': No such device [ 114.252969] % rmmod test_klp_callbacks_mod [ 114.255415] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 114.273187] ===== TEST: module_coming + pre-patch callback -ENODEV ===== [ 114.280884] % modprobe test_klp_callbacks_demo [ 114.285035] livepatch: enabling patch 'test_klp_callbacks_demo' [ 114.285917] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 114.286694] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 114.288290] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 114.289096] livepatch: 'test_klp_callbacks_demo': patching complete [ 114.292103] % echo -19 > /sys/module/test_klp_callbacks_demo/parameters/pre_patch_ret [ 114.294680] % modprobe test_klp_callbacks_mod [ 114.298349] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 114.299592] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 114.301161] livepatch: pre-patch callback failed for object 'test_klp_callbacks_mod' [ 114.302161] livepatch: patch 'test_klp_callbacks_demo' failed for module 'test_klp_callbacks_mod', refusing to load module 'test_klp_callbacks_mod' [ 114.316308] modprobe: ERROR: could not insert 'test_klp_callbacks_mod': No such device [ 114.317418] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 114.318434] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 114.319242] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 115.124048] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 115.124888] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 115.133217] % rmmod test_klp_callbacks_demo [ 115.160863] ===== TEST: multiple target modules ===== [ 115.168612] % modprobe test_klp_callbacks_busy block_transition=N [ 115.172799] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 115.173612] test_klp_callbacks_busy: busymod_work_func enter [ 115.174355] test_klp_callbacks_busy: busymod_work_func exit [ 115.182658] % modprobe test_klp_callbacks_demo [ 115.187571] livepatch: enabling patch 'test_klp_callbacks_demo' [ 115.188476] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 115.189269] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 115.194025] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 116.147838] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 116.148714] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 116.150103] livepatch: 'test_klp_callbacks_demo': patching complete [ 116.235090] % modprobe test_klp_callbacks_mod [ 116.238963] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 116.240256] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 116.241859] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 116.243530] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 116.246705] % rmmod test_klp_callbacks_mod [ 116.249198] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 116.250148] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 116.251535] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 116.252835] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 116.265205] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 116.266320] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 116.267161] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 116.268568] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 117.199761] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 117.200732] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 117.202309] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 117.287942] % rmmod test_klp_callbacks_demo [ 117.304091] % rmmod test_klp_callbacks_busy [ 117.307186] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 117.328167] ===== TEST: busy target module ===== [ 117.337621] % modprobe test_klp_callbacks_busy block_transition=Y [ 117.342513] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 117.343447] test_klp_callbacks_busy: busymod_work_func enter [ 117.353505] % modprobe test_klp_callbacks_demo [ 117.359300] livepatch: enabling patch 'test_klp_callbacks_demo' [ 117.360305] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 117.361214] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 117.366757] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 117.379170] % modprobe test_klp_callbacks_mod [ 117.383577] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 117.385025] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 117.386954] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 117.390628] % rmmod test_klp_callbacks_mod [ 117.393638] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 117.394649] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 117.396119] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 117.405266] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 117.406572] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 119.177461] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 119.178468] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 119.180050] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 119.238502] % rmmod test_klp_callbacks_demo [ 119.249973] % rmmod test_klp_callbacks_busy [ 119.262392] test_klp_callbacks_busy: busymod_work_func exit [ 119.263267] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 119.286371] ===== TEST: multiple livepatches ===== [ 119.296242] % modprobe test_klp_callbacks_demo [ 119.301446] livepatch: enabling patch 'test_klp_callbacks_demo' [ 119.302484] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 119.303397] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 120.115737] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 120.116705] livepatch: 'test_klp_callbacks_demo': patching complete [ 120.143682] % modprobe test_klp_callbacks_demo2 [ 120.148867] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 120.149897] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 120.150822] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 120.152707] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 120.153651] livepatch: 'test_klp_callbacks_demo2': patching complete [ 120.157508] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 120.158713] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 120.159677] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 120.161448] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 120.162432] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 120.163558] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 120.164726] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 120.165669] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 121.139543] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 121.140560] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 121.187204] % rmmod test_klp_callbacks_demo2 [ 121.201769] % rmmod test_klp_callbacks_demo [ 121.229783] ===== TEST: atomic replace ===== [ 121.239499] % modprobe test_klp_callbacks_demo [ 121.244619] livepatch: enabling patch 'test_klp_callbacks_demo' [ 121.245660] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 121.246579] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 121.248473] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 121.249409] livepatch: 'test_klp_callbacks_demo': patching complete [ 121.261237] % modprobe test_klp_callbacks_demo2 replace=1 [ 121.266247] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 121.267255] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 121.268184] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 122.163453] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 122.167861] livepatch: 'test_klp_callbacks_demo2': patching complete [ 122.202476] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 122.203730] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 122.204690] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 122.206545] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 122.207510] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 122.210334] % rmmod test_klp_callbacks_demo2 [ 122.221448] % rmmod test_klp_callbacks_demo [ 122.614094] livepatch: kernel.ftrace_enabled = 1 [ 122.621197] ===== TEST: livepatch interaction with ftrace_enabled sysctl ===== [ 122.625978] livepatch: kernel.ftrace_enabled = 0 [ 122.626817] % modprobe test_klp_livepatch [ 122.649110] livepatch: enabling patch 'test_klp_livepatch' [ 122.649990] livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16) [ 122.651247] livepatch: failed to patch object 'vmlinux' [ 122.652046] livepatch: failed to enable patch 'test_klp_livepatch' [ 122.653121] livepatch: 'test_klp_livepatch': unpatching complete [ 122.667716] modprobe: ERROR: could not insert 'test_klp_livepatch': Device or resource busy [ 122.672649] livepatch: kernel.ftrace_enabled = 1 [ 122.681098] % modprobe test_klp_livepatch [ 122.701902] livepatch: enabling patch 'test_klp_livepatch' [ 122.706122] livepatch: 'test_klp_livepatch': starting patching transition [ 124.147423] livepatch: 'test_klp_livepatch': patching complete [ 124.161062] livepatch: sysctl: setting key "kernel.ftrace_enabled": Device or resource busy [ 124.164031] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 124.165092] livepatch: 'test_klp_livepatch': starting unpatching transition [ 125.130115] livepatch: 'test_klp_livepatch': unpatching complete [ 125.187175] % rmmod test_klp_livepatch [ 125.557169] livepatch: kernel.ftrace_enabled = 1 [ 125.566028] ===== TEST: basic function patching ===== [ 125.574743] % modprobe test_klp_livepatch [ 125.594290] livepatch: enabling patch 'test_klp_livepatch' [ 125.598070] livepatch: 'test_klp_livepatch': starting patching transition [ 125.600092] livepatch: 'test_klp_livepatch': patching complete [ 125.605478] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 125.606490] livepatch: 'test_klp_livepatch': starting unpatching transition [ 125.628899] livepatch: 'test_klp_livepatch': unpatching complete [ 125.631440] % rmmod test_klp_livepatch [ 125.655711] ===== TEST: multiple livepatches ===== [ 125.663971] % modprobe test_klp_livepatch [ 125.683520] livepatch: enabling patch 'test_klp_livepatch' [ 125.687264] livepatch: 'test_klp_livepatch': starting patching transition [ 127.155008] livepatch: 'test_klp_livepatch': patching complete [ 127.243425] test_klp_livepatch: this has been live patched [ 127.266421] % modprobe test_klp_atomic_replace replace=0 [ 127.288219] livepatch: enabling patch 'test_klp_atomic_replace' [ 127.292309] livepatch: 'test_klp_atomic_replace': starting patching transition [ 127.294481] livepatch: 'test_klp_atomic_replace': patching complete [ 127.300080] test_klp_livepatch: this has been live patched [ 127.302529] test_klp_atomic_replace: this has been live patched [ 127.303786] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 127.304891] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 127.327779] livepatch: 'test_klp_atomic_replace': unpatching complete [ 127.330698] % rmmod test_klp_atomic_replace [ 127.342778] test_klp_livepatch: this has been live patched [ 127.345404] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 127.346476] livepatch: 'test_klp_livepatch': starting unpatching transition [ 127.444836] livepatch: 'test_klp_livepatch': unpatching complete [ 127.447755] % rmmod test_klp_livepatch [ 127.472760] ===== TEST: atomic replace livepatch ===== [ 127.481980] % modprobe test_klp_livepatch [ 127.503437] livepatch: enabling patch 'test_klp_livepatch' [ 127.507510] livepatch: 'test_klp_livepatch': starting patching transition [ 127.509521] livepatch: 'test_klp_livepatch': patching complete [ 127.514764] test_klp_livepatch: this has been live patched [ 127.525572] % modprobe test_klp_atomic_replace replace=1 [ 127.562993] livepatch: enabling patch 'test_klp_atomic_replace' [ 127.569082] livepatch: 'test_klp_atomic_replace': starting patching transition [ 127.594767] livepatch: 'test_klp_atomic_replace': patching complete [ 127.602291] test_klp_atomic_replace: this has been live patched [ 127.604978] % rmmod test_klp_livepatch [ 127.615355] test_klp_atomic_replace: this has been live patched [ 127.616462] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 127.617979] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 127.708782] livepatch: 'test_klp_atomic_replace': unpatching complete [ 127.711948] % rmmod test_klp_atomic_replace [ 128.079066] livepatch: kernel.ftrace_enabled = 1 [ 128.082859] ===== TEST: basic shadow variable API ===== [ 128.092685] % modprobe test_klp_shadow_vars [ 128.097860] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 128.098937] test_klp_shadow_vars: got expected NULL result [ 128.099884] test_klp_shadow_vars: shadow_ctor: PTR3 -> PTR2 [ 128.100729] test_klp_shadow_vars: klp_shadow_get_or_alloc(obj=PTR1, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR2 = PTR3 [ 128.102609] test_klp_shadow_vars: shadow_ctor: PTR6 -> PTR5 [ 128.103428] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR1, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR5 = PTR6 [ 128.105137] test_klp_shadow_vars: shadow_ctor: PTR8 -> PTR7 [ 128.105884] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR7 = PTR8 [ 128.107452] test_klp_shadow_vars: shadow_ctor: PTR11 -> PTR10 [ 128.108228] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR10 = PTR11 [ 128.109820] test_klp_shadow_vars: shadow_ctor: PTR13 -> PTR12 [ 128.110595] test_klp_shadow_vars: klp_shadow_get_or_alloc(obj=PTR14, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR12 = PTR13 [ 128.112275] test_klp_shadow_vars: shadow_ctor: PTR16 -> PTR15 [ 128.113084] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR14, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR15 = PTR16 [ 128.114812] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR3 [ 128.115753] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 128.116601] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 128.117525] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 128.118374] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR8 [ 128.119313] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 128.120163] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 128.121148] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 128.122015] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR13 [ 128.122974] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 128.123841] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 128.124827] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 128.125799] test_klp_shadow_vars: klp_shadow_get_or_alloc(obj=PTR1, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR2 = PTR3 [ 128.127473] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 128.128320] test_klp_shadow_vars: klp_shadow_get_or_alloc(obj=PTR9, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR7 = PTR8 [ 128.129978] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 128.130824] test_klp_shadow_vars: klp_shadow_get_or_alloc(obj=PTR14, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR12 = PTR13 [ 128.132600] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 128.133453] test_klp_shadow_vars: shadow_dtor(obj=PTR1, shadow_data=PTR3) [ 128.134371] test_klp_shadow_vars: klp_shadow_free(obj=PTR1, id=0x1234, dtor=PTR17) [ 128.135368] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 128.136305] test_klp_shadow_vars: got expected NULL result [ 128.137068] test_klp_shadow_vars: shadow_dtor(obj=PTR9, shadow_data=PTR8) [ 128.137966] test_klp_shadow_vars: klp_shadow_free(obj=PTR9, id=0x1234, dtor=PTR17) [ 128.138963] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR0 [ 128.139899] test_klp_shadow_vars: got expected NULL result [ 128.140663] test_klp_shadow_vars: shadow_dtor(obj=PTR14, shadow_data=PTR13) [ 128.141583] test_klp_shadow_vars: klp_shadow_free(obj=PTR14, id=0x1234, dtor=PTR17) [ 128.142587] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR0 [ 128.143520] test_klp_shadow_vars: got expected NULL result [ 128.144284] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 128.145221] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 128.146068] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 128.147020] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 128.147887] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 128.148847] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 128.149723] test_klp_shadow_vars: klp_shadow_free_all(id=0x1235, dtor=PTR0) [ 128.150647] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR0 [ 128.151582] test_klp_shadow_vars: got expected NULL result [ 128.152331] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR0 [ 128.153268] test_klp_shadow_vars: got expected NULL result [ 128.154038] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR0 [ 128.155020] test_klp_shadow_vars: got expected NULL result [ 128.159040] % rmmod test_klp_shadow_vars [ 128.533414] livepatch: kernel.ftrace_enabled = 1