[ 99.987713] Running test [R:12663565 T:6 - Livepatch kselftests - Kernel: 5.14.0-168.mr1397_220926_1535.el9.x86_64] [ 116.887232] livepatch: kernel.ftrace_enabled = 1 [ 116.892738] ===== TEST: target module before livepatch ===== [ 116.902718] % modprobe test_klp_callbacks_mod [ 116.908104] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 116.918347] % modprobe test_klp_callbacks_demo [ 116.923120] test_klp_callbacks_demo: tainting kernel with TAINT_LIVEPATCH [ 116.924972] livepatch: enabling patch 'test_klp_callbacks_demo' [ 116.926357] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 116.927697] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 116.929995] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 116.931894] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 116.933262] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 116.935596] livepatch: 'test_klp_callbacks_demo': patching complete [ 116.940290] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 116.942065] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 116.943499] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 116.945861] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 116.947756] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 116.949171] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 116.951537] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 116.955027] % rmmod test_klp_callbacks_demo [ 116.970401] % rmmod test_klp_callbacks_mod [ 116.973874] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 116.994059] ===== TEST: module_coming notifier ===== [ 117.003438] % modprobe test_klp_callbacks_demo [ 117.008518] livepatch: enabling patch 'test_klp_callbacks_demo' [ 117.009920] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 117.011267] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 118.794752] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 118.796659] livepatch: 'test_klp_callbacks_demo': patching complete [ 118.901661] % modprobe test_klp_callbacks_mod [ 118.906603] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 118.908792] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 118.911558] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 118.914398] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 118.917329] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 118.919060] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 118.920480] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 118.922905] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 118.924835] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 118.926305] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 118.928729] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 118.933090] % rmmod test_klp_callbacks_demo [ 118.946044] % rmmod test_klp_callbacks_mod [ 118.949859] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 118.977374] ===== TEST: module_going notifier ===== [ 118.988051] % modprobe test_klp_callbacks_mod [ 118.993000] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 119.005327] % modprobe test_klp_callbacks_demo [ 119.010769] livepatch: enabling patch 'test_klp_callbacks_demo' [ 119.012190] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 119.013557] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 119.015928] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 119.017827] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 119.019215] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 119.021637] livepatch: 'test_klp_callbacks_demo': patching complete [ 119.029747] % rmmod test_klp_callbacks_mod [ 119.033561] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 119.035045] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 119.037410] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 119.039628] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 119.048574] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 119.050283] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 119.051701] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 119.053609] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 119.055033] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 119.059145] % rmmod test_klp_callbacks_demo [ 119.086072] ===== TEST: module_coming and module_going notifiers ===== [ 119.097226] % modprobe test_klp_callbacks_demo [ 119.102705] livepatch: enabling patch 'test_klp_callbacks_demo' [ 119.104114] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 119.105482] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 120.778557] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 120.779969] livepatch: 'test_klp_callbacks_demo': patching complete [ 120.889226] % modprobe test_klp_callbacks_mod [ 120.894149] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 120.896325] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 120.899037] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 120.901933] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 120.907077] % rmmod test_klp_callbacks_mod [ 120.910967] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 120.912465] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 120.914819] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 120.917103] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 120.929616] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 120.931431] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 120.932844] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 121.802608] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 121.804386] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 121.856225] % rmmod test_klp_callbacks_demo [ 121.887576] ===== TEST: target module not present ===== [ 121.899345] % modprobe test_klp_callbacks_demo [ 121.906638] livepatch: enabling patch 'test_klp_callbacks_demo' [ 121.908548] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 121.910385] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 122.762561] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 122.764007] livepatch: 'test_klp_callbacks_demo': patching complete [ 122.851865] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 122.853655] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 122.855072] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 122.856961] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 122.858388] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 122.862228] % rmmod test_klp_callbacks_demo [ 122.886852] ===== TEST: pre-patch callback -ENODEV ===== [ 122.896451] % modprobe test_klp_callbacks_mod [ 122.901521] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 122.904402] % modprobe test_klp_callbacks_demo pre_patch_ret=-19 [ 122.910297] livepatch: enabling patch 'test_klp_callbacks_demo' [ 122.911712] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 122.913106] livepatch: pre-patch callback failed for object 'vmlinux' [ 122.914553] livepatch: failed to enable patch 'test_klp_callbacks_demo' [ 122.916154] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 122.939346] modprobe: ERROR: could not insert 'test_klp_callbacks_demo': No such device [ 122.943498] % rmmod test_klp_callbacks_mod [ 122.947290] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 122.970104] ===== TEST: module_coming + pre-patch callback -ENODEV ===== [ 122.980750] % modprobe test_klp_callbacks_demo [ 122.986279] livepatch: enabling patch 'test_klp_callbacks_demo' [ 122.987706] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 122.989068] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 123.786618] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 123.788079] livepatch: 'test_klp_callbacks_demo': patching complete [ 123.829920] % echo -19 > /sys/module/test_klp_callbacks_demo/parameters/pre_patch_ret [ 123.834164] % modprobe test_klp_callbacks_mod [ 123.839280] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 123.841460] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 123.844191] livepatch: pre-patch callback failed for object 'test_klp_callbacks_mod' [ 123.845943] livepatch: patch 'test_klp_callbacks_demo' failed for module 'test_klp_callbacks_mod', refusing to load module 'test_klp_callbacks_mod' [ 123.865272] modprobe: ERROR: could not insert 'test_klp_callbacks_mod': No such device [ 123.867197] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 123.868908] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 123.870319] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 124.746414] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 124.747930] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 124.793401] % rmmod test_klp_callbacks_demo [ 124.826383] ===== TEST: multiple target modules ===== [ 124.836227] % modprobe test_klp_callbacks_busy block_transition=N [ 124.841524] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 124.842837] test_klp_callbacks_busy: busymod_work_func enter [ 124.844130] test_klp_callbacks_busy: busymod_work_func exit [ 124.854554] % modprobe test_klp_callbacks_demo [ 124.861058] livepatch: enabling patch 'test_klp_callbacks_demo' [ 124.862507] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 124.863874] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 124.869893] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 125.770394] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 125.771854] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 125.774241] livepatch: 'test_klp_callbacks_demo': patching complete [ 125.818922] % modprobe test_klp_callbacks_mod [ 125.823941] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 125.826216] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 125.829069] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 125.831999] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 125.837163] % rmmod test_klp_callbacks_mod [ 125.841060] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 125.842549] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 125.844894] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 125.847149] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 125.856135] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 125.857882] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 125.859272] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 125.861646] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 126.819187] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 126.820542] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 126.822944] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 126.890904] % rmmod test_klp_callbacks_demo [ 126.908255] % rmmod test_klp_callbacks_busy [ 126.912422] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 126.937557] ===== TEST: busy target module ===== [ 126.947605] % modprobe test_klp_callbacks_busy block_transition=Y [ 126.953277] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 126.954711] test_klp_callbacks_busy: busymod_work_func enter [ 126.965926] % modprobe test_klp_callbacks_demo [ 126.972229] livepatch: enabling patch 'test_klp_callbacks_demo' [ 126.973672] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 126.975046] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 126.981214] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 126.995264] % modprobe test_klp_callbacks_mod [ 127.000427] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 127.002647] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 127.005499] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 127.010089] % rmmod test_klp_callbacks_mod [ 127.014049] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 127.015543] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 127.017791] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 127.028079] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 127.029883] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 127.776073] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 127.777554] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 127.779932] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 127.853117] % rmmod test_klp_callbacks_demo [ 127.867059] % rmmod test_klp_callbacks_busy [ 127.886029] test_klp_callbacks_busy: busymod_work_func exit [ 127.887302] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 127.915874] ===== TEST: multiple livepatches ===== [ 127.925639] % modprobe test_klp_callbacks_demo [ 127.931051] livepatch: enabling patch 'test_klp_callbacks_demo' [ 127.932454] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 127.933808] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 128.777964] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 128.779982] livepatch: 'test_klp_callbacks_demo': patching complete [ 128.885697] % modprobe test_klp_callbacks_demo2 [ 128.891496] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 128.893117] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 128.894483] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 129.802054] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 129.803397] livepatch: 'test_klp_callbacks_demo2': patching complete [ 129.839333] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 129.840896] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 129.842255] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 129.844097] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 129.845488] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 129.847051] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 129.848489] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 129.849775] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 129.851468] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 129.852736] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 129.856312] % rmmod test_klp_callbacks_demo2 [ 129.871750] % rmmod test_klp_callbacks_demo [ 129.904647] ===== TEST: atomic replace ===== [ 129.916316] % modprobe test_klp_callbacks_demo [ 129.922127] livepatch: enabling patch 'test_klp_callbacks_demo' [ 129.923510] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 129.924853] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 130.761789] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 130.763208] livepatch: 'test_klp_callbacks_demo': patching complete [ 130.877046] % modprobe test_klp_callbacks_demo2 replace=1 [ 130.882173] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 130.883414] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 130.884604] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 131.785856] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 131.787260] livepatch: 'test_klp_callbacks_demo2': patching complete [ 131.825136] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 131.826831] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 131.828190] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 132.809702] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 132.811197] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 132.856688] % rmmod test_klp_callbacks_demo2 [ 132.869700] % rmmod test_klp_callbacks_demo [ 133.426649] livepatch: kernel.ftrace_enabled = 1 [ 133.431635] ===== TEST: livepatch interaction with ftrace_enabled sysctl ===== [ 133.437109] livepatch: kernel.ftrace_enabled = 0 [ 133.438325] % modprobe test_klp_livepatch [ 133.463219] livepatch: enabling patch 'test_klp_livepatch' [ 133.464578] livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16) [ 133.466702] livepatch: failed to patch object 'vmlinux' [ 133.467886] livepatch: failed to enable patch 'test_klp_livepatch' [ 133.469312] livepatch: 'test_klp_livepatch': unpatching complete [ 133.486426] modprobe: ERROR: could not insert 'test_klp_livepatch': Device or resource busy [ 133.492080] livepatch: kernel.ftrace_enabled = 1 [ 133.501661] % modprobe test_klp_livepatch [ 133.524793] livepatch: enabling patch 'test_klp_livepatch' [ 133.529030] livepatch: 'test_klp_livepatch': starting patching transition [ 133.530692] livepatch: 'test_klp_livepatch': patching complete [ 133.540878] livepatch: sysctl: setting key "kernel.ftrace_enabled": Device or resource busy [ 133.542631] kernel.ftrace_enabled = 1 [ 133.545145] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 133.546606] livepatch: 'test_klp_livepatch': starting unpatching transition [ 133.573635] livepatch: 'test_klp_livepatch': unpatching complete [ 133.577330] % rmmod test_klp_livepatch [ 134.006136] livepatch: kernel.ftrace_enabled = 1 [ 134.012069] ===== TEST: basic function patching ===== [ 134.024274] % modprobe test_klp_livepatch [ 134.049752] livepatch: enabling patch 'test_klp_livepatch' [ 134.054153] livepatch: 'test_klp_livepatch': starting patching transition [ 135.754403] livepatch: 'test_klp_livepatch': patching complete [ 135.839759] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 135.841449] livepatch: 'test_klp_livepatch': starting unpatching transition [ 135.863441] livepatch: 'test_klp_livepatch': unpatching complete [ 135.868165] % rmmod test_klp_livepatch [ 135.898696] ===== TEST: multiple livepatches ===== [ 135.909954] % modprobe test_klp_livepatch [ 135.933897] livepatch: enabling patch 'test_klp_livepatch' [ 135.938312] livepatch: 'test_klp_livepatch': starting patching transition [ 136.777380] livepatch: 'test_klp_livepatch': patching complete [ 136.782672] test_klp_livepatch: this has been live patched [ 136.794887] % modprobe test_klp_atomic_replace replace=0 [ 136.820307] livepatch: enabling patch 'test_klp_atomic_replace' [ 136.824983] livepatch: 'test_klp_atomic_replace': starting patching transition [ 137.801432] livepatch: 'test_klp_atomic_replace': patching complete [ 137.874574] test_klp_livepatch: this has been live patched [ 137.878003] test_klp_atomic_replace: this has been live patched [ 137.879789] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 137.881576] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 137.907251] livepatch: 'test_klp_atomic_replace': unpatching complete [ 137.911023] % rmmod test_klp_atomic_replace [ 137.923821] test_klp_livepatch: this has been live patched [ 137.927736] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 137.929402] livepatch: 'test_klp_livepatch': starting unpatching transition [ 138.027288] livepatch: 'test_klp_livepatch': unpatching complete [ 138.031269] % rmmod test_klp_livepatch [ 138.068497] ===== TEST: atomic replace livepatch ===== [ 138.080848] % modprobe test_klp_livepatch [ 138.105661] livepatch: enabling patch 'test_klp_livepatch' [ 138.110295] livepatch: 'test_klp_livepatch': starting patching transition [ 139.786152] livepatch: 'test_klp_livepatch': patching complete [ 139.888072] test_klp_livepatch: this has been live patched [ 139.902900] % modprobe test_klp_atomic_replace replace=1 [ 139.948061] livepatch: enabling patch 'test_klp_atomic_replace' [ 139.952989] livepatch: 'test_klp_atomic_replace': starting patching transition [ 140.769067] livepatch: 'test_klp_atomic_replace': patching complete [ 140.795033] test_klp_atomic_replace: this has been live patched [ 140.799125] % rmmod test_klp_livepatch [ 140.819670] test_klp_atomic_replace: this has been live patched [ 140.821420] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 140.823324] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 141.789973] livepatch: 'test_klp_atomic_replace': unpatching complete [ 141.848449] % rmmod test_klp_atomic_replace [ 142.278186] livepatch: kernel.ftrace_enabled = 1 [ 142.283298] ===== TEST: basic shadow variable API ===== [ 142.293468] % modprobe test_klp_shadow_vars [ 142.298545] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 142.300172] test_klp_shadow_vars: got expected NULL result [ 142.301602] test_klp_shadow_vars: shadow_ctor: PTR3 -> PTR2 [ 142.302887] 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 [ 142.305729] test_klp_shadow_vars: shadow_ctor: PTR6 -> PTR5 [ 142.306995] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR1, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR5 = PTR6 [ 142.309766] test_klp_shadow_vars: shadow_ctor: PTR8 -> PTR7 [ 142.311039] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR7 = PTR8 [ 142.313754] test_klp_shadow_vars: shadow_ctor: PTR11 -> PTR10 [ 142.315040] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR10 = PTR11 [ 142.317794] test_klp_shadow_vars: shadow_ctor: PTR13 -> PTR12 [ 142.319099] 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 [ 142.321956] test_klp_shadow_vars: shadow_ctor: PTR16 -> PTR15 [ 142.323250] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR14, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR15 = PTR16 [ 142.325977] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR3 [ 142.327542] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 142.328972] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 142.330563] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 142.331998] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR8 [ 142.333613] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 142.335058] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 142.336667] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 142.338131] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR13 [ 142.339770] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 142.341218] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 142.342815] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 142.344267] 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 [ 142.347080] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 142.348494] 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 [ 142.351293] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 142.352712] 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 [ 142.355598] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 142.357056] test_klp_shadow_vars: shadow_dtor(obj=PTR1, shadow_data=PTR3) [ 142.358571] test_klp_shadow_vars: klp_shadow_free(obj=PTR1, id=0x1234, dtor=PTR17) [ 142.360273] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 142.361876] test_klp_shadow_vars: got expected NULL result [ 142.363141] test_klp_shadow_vars: shadow_dtor(obj=PTR9, shadow_data=PTR8) [ 142.364662] test_klp_shadow_vars: klp_shadow_free(obj=PTR9, id=0x1234, dtor=PTR17) [ 142.366331] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR0 [ 142.367880] test_klp_shadow_vars: got expected NULL result [ 142.369145] test_klp_shadow_vars: shadow_dtor(obj=PTR14, shadow_data=PTR13) [ 142.370694] test_klp_shadow_vars: klp_shadow_free(obj=PTR14, id=0x1234, dtor=PTR17) [ 142.372373] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR0 [ 142.373959] test_klp_shadow_vars: got expected NULL result [ 142.375222] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 142.376795] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 142.378212] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 142.379801] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 142.381271] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 142.382903] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 142.384366] test_klp_shadow_vars: klp_shadow_free_all(id=0x1235, dtor=PTR0) [ 142.385909] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR0 [ 142.387479] test_klp_shadow_vars: got expected NULL result [ 142.388747] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR0 [ 142.390364] test_klp_shadow_vars: got expected NULL result [ 142.391635] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR0 [ 142.393221] test_klp_shadow_vars: got expected NULL result [ 142.397640] % rmmod test_klp_shadow_vars [ 142.811407] livepatch: kernel.ftrace_enabled = 1 [ 142.816514] ===== TEST: system state modification ===== [ 142.826622] % modprobe test_klp_state [ 142.831949] livepatch: enabling patch 'test_klp_state' [ 142.833201] test_klp_state: pre_patch_callback: vmlinux [ 142.834422] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 142.836389] livepatch: 'test_klp_state': starting patching transition [ 143.752878] test_klp_state: post_patch_callback: vmlinux [ 143.754001] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 143.755365] livepatch: 'test_klp_state': patching complete [ 143.775975] % echo 0 > /sys/kernel/livepatch/test_klp_state/enabled [ 143.777382] livepatch: 'test_klp_state': initializing unpatching transition [ 143.778837] test_klp_state: pre_unpatch_callback: vmlinux [ 143.779939] test_klp_state: restore_console_loglevel: restoring console_loglevel [ 143.781424] livepatch: 'test_klp_state': starting unpatching transition [ 143.782989] test_klp_state: post_unpatch_callback: vmlinux [ 143.784109] test_klp_state: free_loglevel_state: freeing space for the stored console_loglevel [ 143.786021] livepatch: 'test_klp_state': unpatching complete [ 143.789955] % rmmod test_klp_state [ 143.818682] ===== TEST: taking over system state modification ===== [ 143.828830] % modprobe test_klp_state [ 143.834499] livepatch: enabling patch 'test_klp_state' [ 143.835957] test_klp_state: pre_patch_callback: vmlinux [ 143.837700] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 143.840104] livepatch: 'test_klp_state': starting patching transition [ 144.776860] test_klp_state: post_patch_callback: vmlinux [ 144.778022] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 144.779387] livepatch: 'test_klp_state': patching complete [ 144.792265] % modprobe test_klp_state2 [ 144.796931] livepatch: enabling patch 'test_klp_state2' [ 144.798017] livepatch: 'test_klp_state2': initializing patching transition [ 144.799422] test_klp_state2: pre_patch_callback: vmlinux [ 144.800502] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 144.802353] livepatch: 'test_klp_state2': starting patching transition [ 145.800652] livepatch: 'test_klp_state2': completing patching transition [ 145.802158] test_klp_state2: post_patch_callback: vmlinux [ 145.803244] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 145.804891] livepatch: 'test_klp_state2': patching complete [ 145.845350] % rmmod test_klp_state [ 145.856244] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 145.857614] livepatch: 'test_klp_state2': initializing unpatching transition [ 145.859078] test_klp_state2: pre_unpatch_callback: vmlinux [ 145.860182] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 145.861674] livepatch: 'test_klp_state2': starting unpatching transition [ 146.760697] test_klp_state2: post_unpatch_callback: vmlinux [ 146.761898] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 146.763638] livepatch: 'test_klp_state2': unpatching complete [ 146.782466] % rmmod test_klp_state2 [ 146.803658] ===== TEST: compatible cumulative livepatches ===== [ 146.812534] % modprobe test_klp_state2 [ 146.817351] livepatch: enabling patch 'test_klp_state2' [ 146.818466] test_klp_state2: pre_patch_callback: vmlinux [ 146.819643] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 146.821459] livepatch: 'test_klp_state2': starting patching transition [ 146.823010] test_klp_state2: post_patch_callback: vmlinux [ 146.824104] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 146.825547] livepatch: 'test_klp_state2': patching complete [ 146.837320] % modprobe test_klp_state3 [ 146.841840] livepatch: enabling patch 'test_klp_state3' [ 146.842919] livepatch: 'test_klp_state3': initializing patching transition [ 146.844332] test_klp_state3: pre_patch_callback: vmlinux [ 146.845407] test_klp_state3: allocate_loglevel_state: space to store console_loglevel already allocated [ 146.847279] livepatch: 'test_klp_state3': starting patching transition [ 146.848757] livepatch: 'test_klp_state3': completing patching transition [ 146.850164] test_klp_state3: post_patch_callback: vmlinux [ 146.851265] test_klp_state3: fix_console_loglevel: taking over the console_loglevel change [ 146.852903] livepatch: 'test_klp_state3': patching complete [ 146.858705] % rmmod test_klp_state2 [ 146.876501] % modprobe test_klp_state2 [ 146.881001] livepatch: enabling patch 'test_klp_state2' [ 146.882083] livepatch: 'test_klp_state2': initializing patching transition [ 146.883617] test_klp_state2: pre_patch_callback: vmlinux [ 146.884765] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 146.886622] livepatch: 'test_klp_state2': starting patching transition [ 147.784497] livepatch: 'test_klp_state2': completing patching transition [ 147.785994] test_klp_state2: post_patch_callback: vmlinux [ 147.787095] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 147.788951] livepatch: 'test_klp_state2': patching complete [ 147.822140] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 147.823540] livepatch: 'test_klp_state2': initializing unpatching transition [ 147.824976] test_klp_state2: pre_unpatch_callback: vmlinux [ 147.826075] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 147.827601] livepatch: 'test_klp_state2': starting unpatching transition [ 148.744588] test_klp_state2: post_unpatch_callback: vmlinux [ 148.746121] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 148.748388] livepatch: 'test_klp_state2': unpatching complete [ 148.853237] % rmmod test_klp_state2 [ 148.870396] % rmmod test_klp_state3 [ 148.899801] ===== TEST: incompatible cumulative livepatches ===== [ 148.909733] % modprobe test_klp_state2 [ 148.914442] livepatch: enabling patch 'test_klp_state2' [ 148.915563] test_klp_state2: pre_patch_callback: vmlinux [ 148.916758] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 148.918508] livepatch: 'test_klp_state2': starting patching transition [ 149.768287] test_klp_state2: post_patch_callback: vmlinux [ 149.769553] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 149.771107] livepatch: 'test_klp_state2': patching complete [ 149.868363] % modprobe test_klp_state [ 149.875434] livepatch: Livepatch patch (test_klp_state) is not compatible with the already installed livepatches. [ 149.891263] modprobe: ERROR: could not insert 'test_klp_state': Invalid argument [ 149.893080] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 149.894584] livepatch: 'test_klp_state2': initializing unpatching transition [ 149.896217] test_klp_state2: pre_unpatch_callback: vmlinux [ 149.897455] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 149.899120] livepatch: 'test_klp_state2': starting unpatching transition [ 149.900878] test_klp_state2: post_unpatch_callback: vmlinux [ 149.902163] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 149.904099] livepatch: 'test_klp_state2': unpatching complete [ 149.908259] % rmmod test_klp_state2