[ 122.900952] Running test [R:12696837 T:6 - Livepatch kselftests - Kernel: 5.14.0-171.mr1393_221002_1550.el9.x86_64] [ 139.576435] livepatch: kernel.ftrace_enabled = 1 [ 139.585273] ===== TEST: target module before livepatch ===== [ 139.614112] % modprobe test_klp_callbacks_mod [ 139.623289] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 139.644232] % modprobe test_klp_callbacks_demo [ 139.652779] test_klp_callbacks_demo: tainting kernel with TAINT_LIVEPATCH [ 139.660619] livepatch: enabling patch 'test_klp_callbacks_demo' [ 139.667390] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 139.674096] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 139.685736] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 141.173387] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 141.180196] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 141.191942] livepatch: 'test_klp_callbacks_demo': patching complete [ 141.244400] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 141.252452] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 141.259357] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 141.271200] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 142.197369] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 142.204376] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 142.216316] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 142.295896] % rmmod test_klp_callbacks_demo [ 142.312587] % rmmod test_klp_callbacks_mod [ 142.319265] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 142.341056] ===== TEST: module_coming notifier ===== [ 142.354534] % modprobe test_klp_callbacks_demo [ 142.363530] livepatch: enabling patch 'test_klp_callbacks_demo' [ 142.370292] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 142.377002] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 144.117270] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 144.124081] livepatch: 'test_klp_callbacks_demo': patching complete [ 144.147487] % modprobe test_klp_callbacks_mod [ 144.155894] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 144.166678] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 144.180465] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 144.194417] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 144.201908] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 144.209885] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 144.216789] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 144.228645] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 145.141211] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 145.148215] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 145.160160] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 145.253725] % rmmod test_klp_callbacks_demo [ 145.276522] % rmmod test_klp_callbacks_mod [ 145.283201] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 145.316459] ===== TEST: module_going notifier ===== [ 145.329265] % modprobe test_klp_callbacks_mod [ 145.337542] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 145.352553] % modprobe test_klp_callbacks_demo [ 145.361637] livepatch: enabling patch 'test_klp_callbacks_demo' [ 145.368312] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 145.375020] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 145.386671] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 147.125124] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 147.131957] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 147.143704] livepatch: 'test_klp_callbacks_demo': patching complete [ 147.255570] % rmmod test_klp_callbacks_mod [ 147.262356] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 147.269041] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 147.280792] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 147.291859] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 147.309762] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 147.317830] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 147.324734] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 148.149098] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 148.156118] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 148.248124] % rmmod test_klp_callbacks_demo [ 148.276428] ===== TEST: module_coming and module_going notifiers ===== [ 148.291607] % modprobe test_klp_callbacks_demo [ 148.300468] livepatch: enabling patch 'test_klp_callbacks_demo' [ 148.307148] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 148.313855] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 149.173080] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 149.179890] livepatch: 'test_klp_callbacks_demo': patching complete [ 149.260125] % modprobe test_klp_callbacks_mod [ 149.268344] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 149.279135] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 149.292922] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 149.306850] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 149.315964] % rmmod test_klp_callbacks_mod [ 149.322642] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 149.329394] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 149.341169] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 149.352239] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 149.370713] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 149.378689] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 149.385594] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 151.157018] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 151.164023] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 151.222453] % rmmod test_klp_callbacks_demo [ 151.248514] ===== TEST: target module not present ===== [ 151.262099] % modprobe test_klp_callbacks_demo [ 151.270999] livepatch: enabling patch 'test_klp_callbacks_demo' [ 151.277689] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 151.284387] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 152.244948] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 152.251755] livepatch: 'test_klp_callbacks_demo': patching complete [ 152.326322] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 152.334335] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 152.341241] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 153.204946] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 153.211948] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 153.265088] % rmmod test_klp_callbacks_demo [ 153.291668] ===== TEST: pre-patch callback -ENODEV ===== [ 153.305123] % modprobe test_klp_callbacks_mod [ 153.313606] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 153.321073] % modprobe test_klp_callbacks_demo pre_patch_ret=-19 [ 153.331682] livepatch: enabling patch 'test_klp_callbacks_demo' [ 153.338412] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 153.345119] livepatch: pre-patch callback failed for object 'vmlinux' [ 153.352309] livepatch: failed to enable patch 'test_klp_callbacks_demo' [ 153.359907] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 153.381451] modprobe: ERROR: could not insert 'test_klp_callbacks_demo': No such device [ 153.392146] % rmmod test_klp_callbacks_mod [ 153.398773] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 153.421401] ===== TEST: module_coming + pre-patch callback -ENODEV ===== [ 153.436555] % modprobe test_klp_callbacks_demo [ 153.445433] livepatch: enabling patch 'test_klp_callbacks_demo' [ 153.452120] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 153.458830] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 155.188900] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 155.195709] livepatch: 'test_klp_callbacks_demo': patching complete [ 155.222761] % echo -19 > /sys/module/test_klp_callbacks_demo/parameters/pre_patch_ret [ 155.233284] % modprobe test_klp_callbacks_mod [ 155.241588] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 155.252370] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 155.266160] livepatch: pre-patch callback failed for object 'test_klp_callbacks_mod' [ 155.274808] livepatch: patch 'test_klp_callbacks_demo' failed for module 'test_klp_callbacks_mod', refusing to load module 'test_klp_callbacks_mod' [ 155.308540] modprobe: ERROR: could not insert 'test_klp_callbacks_mod': No such device [ 155.317523] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 155.325537] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 155.332440] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 156.148833] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 156.155837] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 156.256767] % rmmod test_klp_callbacks_demo [ 156.286890] ===== TEST: multiple target modules ===== [ 156.303963] % modprobe test_klp_callbacks_busy block_transition=N [ 156.314303] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 156.321124] test_klp_callbacks_busy: busymod_work_func enter [ 156.327460] test_klp_callbacks_busy: busymod_work_func exit [ 156.342130] % modprobe test_klp_callbacks_demo [ 156.351833] livepatch: enabling patch 'test_klp_callbacks_demo' [ 156.358517] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 156.365225] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 156.379776] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 158.132825] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 158.139633] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 158.151479] livepatch: 'test_klp_callbacks_demo': patching complete [ 158.255504] % modprobe test_klp_callbacks_mod [ 158.263747] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 158.274528] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 158.288327] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 158.302275] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 158.311419] % rmmod test_klp_callbacks_mod [ 158.318220] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 158.324950] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 158.336702] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 158.347771] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 158.370414] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 158.378413] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 158.385317] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 158.397259] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 160.223742] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 160.230749] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 160.242801] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 160.336220] % rmmod test_klp_callbacks_demo [ 160.356969] % rmmod test_klp_callbacks_busy [ 160.363826] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 160.388702] ===== TEST: busy target module ===== [ 160.401351] % modprobe test_klp_callbacks_busy block_transition=Y [ 160.411557] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 160.418390] test_klp_callbacks_busy: busymod_work_func enter [ 160.433213] % modprobe test_klp_callbacks_demo [ 160.442819] livepatch: enabling patch 'test_klp_callbacks_demo' [ 160.449537] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 160.456243] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 160.470898] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 160.489566] % modprobe test_klp_callbacks_mod [ 160.497711] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 160.508501] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 160.522336] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 160.531487] % rmmod test_klp_callbacks_mod [ 160.538266] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 160.544947] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 160.556020] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 160.574294] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 160.582364] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 162.195668] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 162.202672] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 162.214713] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 162.318302] % rmmod test_klp_callbacks_demo [ 162.338109] % rmmod test_klp_callbacks_busy [ 162.362461] test_klp_callbacks_busy: busymod_work_func exit [ 162.368730] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 162.395070] ===== TEST: multiple livepatches ===== [ 162.408199] % modprobe test_klp_callbacks_demo [ 162.417127] livepatch: enabling patch 'test_klp_callbacks_demo' [ 162.423796] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 162.430503] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 164.148573] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 164.155384] livepatch: 'test_klp_callbacks_demo': patching complete [ 164.208368] % modprobe test_klp_callbacks_demo2 [ 164.217195] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 164.223952] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 164.230756] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 165.172493] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 165.179406] livepatch: 'test_klp_callbacks_demo2': patching complete [ 165.273268] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 165.281399] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 165.288400] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 166.196492] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 166.203596] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 166.311781] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 166.319764] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 166.326668] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 167.156456] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 167.163460] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 167.250403] % rmmod test_klp_callbacks_demo2 [ 167.273893] % rmmod test_klp_callbacks_demo [ 167.305190] ===== TEST: atomic replace ===== [ 167.317914] % modprobe test_klp_callbacks_demo [ 167.326889] livepatch: enabling patch 'test_klp_callbacks_demo' [ 167.333653] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 167.340365] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 168.180408] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 168.187231] livepatch: 'test_klp_callbacks_demo': patching complete [ 168.287169] % modprobe test_klp_callbacks_demo2 replace=1 [ 168.297240] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 168.303984] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 168.310788] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 169.140391] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 169.147315] livepatch: 'test_klp_callbacks_demo2': patching complete [ 169.252543] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 169.260612] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 169.267633] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 170.164371] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 170.171471] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 170.191580] % rmmod test_klp_callbacks_demo2 [ 170.207651] % rmmod test_klp_callbacks_demo [ 170.709359] livepatch: kernel.ftrace_enabled = 1 [ 170.718196] ===== TEST: livepatch interaction with ftrace_enabled sysctl ===== [ 170.729754] livepatch: kernel.ftrace_enabled = 0 [ 170.735058] % modprobe test_klp_livepatch [ 170.765265] livepatch: enabling patch 'test_klp_livepatch' [ 170.771542] livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16) [ 170.781263] livepatch: failed to patch object 'vmlinux' [ 170.787107] livepatch: failed to enable patch 'test_klp_livepatch' [ 170.794280] livepatch: 'test_klp_livepatch': unpatching complete [ 170.814902] modprobe: ERROR: could not insert 'test_klp_livepatch': Device or resource busy [ 170.827711] livepatch: kernel.ftrace_enabled = 1 [ 170.840386] % modprobe test_klp_livepatch [ 170.865992] livepatch: enabling patch 'test_klp_livepatch' [ 170.874550] livepatch: 'test_klp_livepatch': starting patching transition [ 172.212280] livepatch: 'test_klp_livepatch': patching complete [ 172.230438] livepatch: sysctl: setting key "kernel.ftrace_enabled": Device or resource busy [ 172.239767] kernel.ftrace_enabled = 1 [ 172.245557] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 172.253121] livepatch: 'test_klp_livepatch': starting unpatching transition [ 173.195278] livepatch: 'test_klp_livepatch': unpatching complete [ 173.278032] % rmmod test_klp_livepatch [ 173.688557] livepatch: kernel.ftrace_enabled = 1 [ 173.697191] ===== TEST: basic function patching ===== [ 173.710552] % modprobe test_klp_livepatch [ 173.736251] livepatch: enabling patch 'test_klp_livepatch' [ 173.744891] livepatch: 'test_klp_livepatch': starting patching transition [ 175.220241] livepatch: 'test_klp_livepatch': patching complete [ 175.304603] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 175.312101] livepatch: 'test_klp_livepatch': starting unpatching transition [ 176.203180] livepatch: 'test_klp_livepatch': unpatching complete [ 176.235085] % rmmod test_klp_livepatch [ 176.271506] ===== TEST: multiple livepatches ===== [ 176.284660] % modprobe test_klp_livepatch [ 176.310472] livepatch: enabling patch 'test_klp_livepatch' [ 176.319109] livepatch: 'test_klp_livepatch': starting patching transition [ 177.204134] livepatch: 'test_klp_livepatch': patching complete [ 177.260022] test_klp_livepatch: this has been live patched [ 177.279952] % modprobe test_klp_atomic_replace replace=0 [ 177.307201] livepatch: enabling patch 'test_klp_atomic_replace' [ 177.316111] livepatch: 'test_klp_atomic_replace': starting patching transition [ 178.164097] livepatch: 'test_klp_atomic_replace': patching complete [ 178.256804] test_klp_livepatch: this has been live patched [ 178.264743] test_klp_atomic_replace: this has been live patched [ 178.271642] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 178.279753] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 179.147106] livepatch: 'test_klp_atomic_replace': unpatching complete [ 179.203528] % rmmod test_klp_atomic_replace [ 179.220222] test_klp_livepatch: this has been live patched [ 179.228508] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 179.236030] livepatch: 'test_klp_livepatch': starting unpatching transition [ 180.236039] livepatch: 'test_klp_livepatch': unpatching complete [ 180.261176] % rmmod test_klp_livepatch [ 180.291601] ===== TEST: atomic replace livepatch ===== [ 180.305059] % modprobe test_klp_livepatch [ 180.331108] livepatch: enabling patch 'test_klp_livepatch' [ 180.339725] livepatch: 'test_klp_livepatch': starting patching transition [ 181.108192] livepatch: 'test_klp_livepatch': patching complete [ 181.177154] test_klp_livepatch: this has been live patched [ 181.192960] % modprobe test_klp_atomic_replace replace=1 [ 181.236911] livepatch: enabling patch 'test_klp_atomic_replace' [ 181.245795] livepatch: 'test_klp_atomic_replace': starting patching transition [ 182.220985] livepatch: 'test_klp_atomic_replace': patching complete [-- MARK -- Sun Oct 2 20:30:00 2022] [ 182.291560] test_klp_atomic_replace: this has been live patched [ 182.300172] % rmmod test_klp_livepatch [ 182.322876] test_klp_atomic_replace: this has been live patched [ 182.329828] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 182.337840] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 183.287937] livepatch: 'test_klp_atomic_replace': unpatching complete [ 183.363174] % rmmod test_klp_atomic_replace [ 183.778643] livepatch: kernel.ftrace_enabled = 1 [ 183.787297] ===== TEST: basic shadow variable API ===== [ 183.801440] % modprobe test_klp_shadow_vars [ 183.809999] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 183.817874] test_klp_shadow_vars: got expected NULL result [ 183.824220] test_klp_shadow_vars: shadow_ctor: PTR3 -> PTR2 [ 183.830446] 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 [ 183.844723] test_klp_shadow_vars: shadow_ctor: PTR6 -> PTR5 [ 183.850946] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR1, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR5 = PTR6 [ 183.864567] test_klp_shadow_vars: shadow_ctor: PTR8 -> PTR7 [ 183.870791] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR7 = PTR8 [ 183.884381] test_klp_shadow_vars: shadow_ctor: PTR11 -> PTR10 [ 183.890798] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR10 = PTR11 [ 183.904582] test_klp_shadow_vars: shadow_ctor: PTR13 -> PTR12 [ 183.910997] 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 [ 183.925555] test_klp_shadow_vars: shadow_ctor: PTR16 -> PTR15 [ 183.931978] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR14, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR15 = PTR16 [ 183.945851] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR3 [ 183.953720] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 183.960813] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 183.968682] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 183.975775] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR8 [ 183.983656] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 183.990739] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 183.998704] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 184.005990] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR13 [ 184.014052] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 184.021338] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 184.029401] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 184.036688] 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 [ 184.050957] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 184.058050] 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 [ 184.072319] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 184.079414] 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 [ 184.093980] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 184.101266] test_klp_shadow_vars: shadow_dtor(obj=PTR1, shadow_data=PTR3) [ 184.108847] test_klp_shadow_vars: klp_shadow_free(obj=PTR1, id=0x1234, dtor=PTR17) [ 184.117298] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 184.125158] test_klp_shadow_vars: got expected NULL result [ 184.131476] test_klp_shadow_vars: shadow_dtor(obj=PTR9, shadow_data=PTR8) [ 184.139056] test_klp_shadow_vars: klp_shadow_free(obj=PTR9, id=0x1234, dtor=PTR17) [ 184.147506] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR0 [ 184.155366] test_klp_shadow_vars: got expected NULL result [ 184.161684] test_klp_shadow_vars: shadow_dtor(obj=PTR14, shadow_data=PTR13) [ 184.169458] test_klp_shadow_vars: klp_shadow_free(obj=PTR14, id=0x1234, dtor=PTR17) [ 184.178006] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR0 [ 184.185969] test_klp_shadow_vars: got expected NULL result [ 184.192285] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 184.200154] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 184.207246] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 184.215213] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 184.222501] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 184.230565] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 184.237848] test_klp_shadow_vars: klp_shadow_free_all(id=0x1235, dtor=PTR0) [ 184.245620] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR0 [ 184.253489] test_klp_shadow_vars: got expected NULL result [ 184.259805] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR0 [ 184.267676] test_klp_shadow_vars: got expected NULL result [ 184.273993] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR0 [ 184.281973] test_klp_shadow_vars: got expected NULL result [ 184.290809] % rmmod test_klp_shadow_vars [ 184.698418] livepatch: kernel.ftrace_enabled = 1 [ 184.707080] ===== TEST: system state modification ===== [ 184.721037] % modprobe test_klp_state [ 184.729026] livepatch: enabling patch 'test_klp_state' [ 184.734900] test_klp_state: pre_patch_callback: vmlinux [ 184.740743] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 184.750458] livepatch: 'test_klp_state': starting patching transition [ 186.163849] test_klp_state: post_patch_callback: vmlinux [ 186.169785] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 186.177364] livepatch: 'test_klp_state': patching complete [ 186.204663] % echo 0 > /sys/kernel/livepatch/test_klp_state/enabled [ 186.211730] livepatch: 'test_klp_state': initializing unpatching transition [ 186.219534] test_klp_state: pre_unpatch_callback: vmlinux [ 186.225562] test_klp_state: restore_console_loglevel: restoring console_loglevel [ 186.233822] livepatch: 'test_klp_state': starting unpatching transition [ 187.187750] test_klp_state: post_unpatch_callback: vmlinux [ 187.193879] test_klp_state: free_loglevel_state: freeing space for the stored console_loglevel [ 187.203498] livepatch: 'test_klp_state': unpatching complete [ 187.257964] % rmmod test_klp_state [ 187.281438] ===== TEST: taking over system state modification ===== [ 187.295979] % modprobe test_klp_state [ 187.304007] livepatch: enabling patch 'test_klp_state' [ 187.309802] test_klp_state: pre_patch_callback: vmlinux [ 187.315637] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 187.325348] livepatch: 'test_klp_state': starting patching transition [ 188.147740] test_klp_state: post_patch_callback: vmlinux [ 188.153676] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 188.161258] livepatch: 'test_klp_state': patching complete [ 188.271776] % modprobe test_klp_state2 [ 188.280066] livepatch: enabling patch 'test_klp_state2' [ 188.285905] livepatch: 'test_klp_state2': initializing patching transition [ 188.293616] test_klp_state2: pre_patch_callback: vmlinux [ 188.299545] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 188.310031] livepatch: 'test_klp_state2': starting patching transition [ 189.235587] livepatch: 'test_klp_state2': completing patching transition [ 189.243217] test_klp_state2: post_patch_callback: vmlinux [ 189.249248] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 189.258473] livepatch: 'test_klp_state2': patching complete [ 189.353046] % rmmod test_klp_state [ 189.374408] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 189.381578] livepatch: 'test_klp_state2': initializing unpatching transition [ 189.389505] test_klp_state2: pre_unpatch_callback: vmlinux [ 189.395629] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 189.403985] livepatch: 'test_klp_state2': starting unpatching transition [ 191.155631] test_klp_state2: post_unpatch_callback: vmlinux [ 191.161859] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 191.171575] livepatch: 'test_klp_state2': unpatching complete [ 191.240408] % rmmod test_klp_state2 [ 191.270907] ===== TEST: compatible cumulative livepatches ===== [ 191.285510] % modprobe test_klp_state2 [ 191.293739] livepatch: enabling patch 'test_klp_state2' [ 191.299701] test_klp_state2: pre_patch_callback: vmlinux [ 191.305633] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 191.315445] livepatch: 'test_klp_state2': starting patching transition [ 192.179615] test_klp_state2: post_patch_callback: vmlinux [ 192.185648] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 192.193323] livepatch: 'test_klp_state2': patching complete [ 192.262010] % modprobe test_klp_state3 [ 192.270342] livepatch: enabling patch 'test_klp_state3' [ 192.276180] livepatch: 'test_klp_state3': initializing patching transition [ 192.283893] test_klp_state3: pre_patch_callback: vmlinux [ 192.289823] test_klp_state3: allocate_loglevel_state: space to store console_loglevel already allocated [ 192.300312] livepatch: 'test_klp_state3': starting patching transition [ 193.203459] livepatch: 'test_klp_state3': completing patching transition [ 193.211091] test_klp_state3: post_patch_callback: vmlinux [ 193.217113] test_klp_state3: fix_console_loglevel: taking over the console_loglevel change [ 193.226342] livepatch: 'test_klp_state3': patching complete [ 193.240580] % rmmod test_klp_state2 [ 193.268742] % modprobe test_klp_state2 [ 193.276971] livepatch: enabling patch 'test_klp_state2' [ 193.282811] livepatch: 'test_klp_state2': initializing patching transition [ 193.290524] test_klp_state2: pre_patch_callback: vmlinux [ 193.296455] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 193.306943] livepatch: 'test_klp_state2': starting patching transition [ 194.227395] livepatch: 'test_klp_state2': completing patching transition [ 194.235036] test_klp_state2: post_patch_callback: vmlinux [ 194.241057] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 194.250289] livepatch: 'test_klp_state2': patching complete [ 194.355722] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 194.362896] livepatch: 'test_klp_state2': initializing unpatching transition [ 194.370805] test_klp_state2: pre_unpatch_callback: vmlinux [ 194.376929] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 194.385283] livepatch: 'test_klp_state2': starting unpatching transition [ 195.187496] test_klp_state2: post_unpatch_callback: vmlinux [ 195.193726] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 195.203438] livepatch: 'test_klp_state2': unpatching complete [ 195.308661] % rmmod test_klp_state2 [ 195.324845] % rmmod test_klp_state3 [ 195.353170] ===== TEST: incompatible cumulative livepatches ===== [ 195.367702] % modprobe test_klp_state2 [ 195.375996] livepatch: enabling patch 'test_klp_state2' [ 195.381924] test_klp_state2: pre_patch_callback: vmlinux [ 195.387857] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 195.397663] livepatch: 'test_klp_state2': starting patching transition [ 196.211461] test_klp_state2: post_patch_callback: vmlinux [ 196.217496] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 196.225172] livepatch: 'test_klp_state2': patching complete [ 196.233664] % modprobe test_klp_state [ 196.241768] livepatch: Livepatch patch (test_klp_state) is not compatible with the already installed livepatches. [ 196.267043] modprobe: ERROR: could not insert 'test_klp_state': Invalid argument [ 196.275411] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 196.282576] livepatch: 'test_klp_state2': initializing unpatching transition [ 196.290484] test_klp_state2: pre_unpatch_callback: vmlinux [ 196.296621] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 196.304973] livepatch: 'test_klp_state2': starting unpatching transition [ 197.171423] test_klp_state2: post_unpatch_callback: vmlinux [ 197.177652] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 197.187365] livepatch: 'test_klp_state2': unpatching complete [ 197.227588] % rmmod test_klp_state2