[ 240.860140] Running test [R:13288565 T:7 - Livepatch kselftests - Kernel: 5.14.0-244.1949_757867233.el9.x86_64+debug] [ 292.547245] livepatch: kernel.ftrace_enabled = 1 [ 292.594057] ===== TEST: target module before livepatch ===== [ 292.680504] % modprobe test_klp_callbacks_mod [ 292.732710] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 292.835474] % modprobe test_klp_callbacks_demo [ 292.873198] test_klp_callbacks_demo: tainting kernel with TAINT_LIVEPATCH [ 292.876993] livepatch: enabling patch 'test_klp_callbacks_demo' [ 292.878171] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 292.879049] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 292.880504] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 292.883141] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 292.884067] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 292.885515] livepatch: 'test_klp_callbacks_demo': patching complete [ 292.921143] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 292.924221] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 292.925199] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 292.926661] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 292.929168] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 292.930109] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 292.931772] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 292.955596] % rmmod test_klp_callbacks_demo [ 293.031753] % rmmod test_klp_callbacks_mod [ 293.059814] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 293.228101] ===== TEST: module_coming notifier ===== [ 293.310874] % modprobe test_klp_callbacks_demo [ 293.349783] livepatch: enabling patch 'test_klp_callbacks_demo' [ 293.350773] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 293.351651] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 293.353375] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 293.354266] livepatch: 'test_klp_callbacks_demo': patching complete [ 293.470592] % modprobe test_klp_callbacks_mod [ 293.507192] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 293.508757] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 293.510446] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 293.513132] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 293.524675] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 293.526361] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 293.527276] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 293.528749] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 293.530565] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 293.531513] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 293.533026] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 293.555873] % rmmod test_klp_callbacks_demo [ 293.626617] % rmmod test_klp_callbacks_mod [ 293.654557] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 293.819359] ===== TEST: module_going notifier ===== [ 293.903435] % modprobe test_klp_callbacks_mod [ 293.941272] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 294.036753] % modprobe test_klp_callbacks_demo [ 294.075509] livepatch: enabling patch 'test_klp_callbacks_demo' [ 294.076503] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 294.077383] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 294.078826] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 294.080534] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 294.081441] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 294.082888] livepatch: 'test_klp_callbacks_demo': patching complete [ 294.141637] % rmmod test_klp_callbacks_mod [ 294.171338] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 294.172652] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 294.174119] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 294.175496] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 294.201944] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 294.203824] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 294.204744] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 294.206516] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 294.207444] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 294.230934] % rmmod test_klp_callbacks_demo [ 294.426034] ===== TEST: module_coming and module_going notifiers ===== [ 294.510026] % modprobe test_klp_callbacks_demo [ 294.548931] livepatch: enabling patch 'test_klp_callbacks_demo' [ 294.549944] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 294.550820] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 294.552526] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 294.553421] livepatch: 'test_klp_callbacks_demo': patching complete [ 294.672799] % modprobe test_klp_callbacks_mod [ 294.709706] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 294.711080] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 294.712761] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 294.715445] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 294.751050] % rmmod test_klp_callbacks_mod [ 294.779766] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 294.780985] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 294.782488] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 294.783852] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 294.812856] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 294.816835] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 294.817973] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 295.771035] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 295.772099] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 295.806095] % rmmod test_klp_callbacks_demo [ 296.010152] ===== TEST: target module not present ===== [ 296.093459] % modprobe test_klp_callbacks_demo [ 296.131817] livepatch: enabling patch 'test_klp_callbacks_demo' [ 296.132824] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 296.133703] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 296.135412] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 296.136305] livepatch: 'test_klp_callbacks_demo': patching complete [ 296.171847] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 296.173591] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 296.174514] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 296.176248] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 296.177167] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 296.199399] % rmmod test_klp_callbacks_demo [ 296.404710] ===== TEST: pre-patch callback -ENODEV ===== [ 296.487026] % modprobe test_klp_callbacks_mod [ 296.522718] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 296.535130] % modprobe test_klp_callbacks_demo pre_patch_ret=-19 [ 296.572714] livepatch: enabling patch 'test_klp_callbacks_demo' [ 296.573719] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 296.574584] livepatch: pre-patch callback failed for object 'vmlinux' [ 296.575496] livepatch: failed to enable patch 'test_klp_callbacks_demo' [ 296.576561] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 296.603874] modprobe: ERROR: could not insert 'test_klp_callbacks_demo': No such device [ 296.629592] % rmmod test_klp_callbacks_mod [ 296.656296] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 296.827650] ===== TEST: module_coming + pre-patch callback -ENODEV ===== [ 296.910839] % modprobe test_klp_callbacks_demo [ 296.948664] livepatch: enabling patch 'test_klp_callbacks_demo' [ 296.949843] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 296.950716] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 296.952503] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 296.953414] livepatch: 'test_klp_callbacks_demo': patching complete [ 296.988397] % echo -19 > /sys/module/test_klp_callbacks_demo/parameters/pre_patch_ret [ 297.011562] % modprobe test_klp_callbacks_mod [ 297.050532] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 297.051916] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 297.053640] livepatch: pre-patch callback failed for object 'test_klp_callbacks_mod' [ 297.054722] livepatch: patch 'test_klp_callbacks_demo' failed for module 'test_klp_callbacks_mod', refusing to load module 'test_klp_callbacks_mod' [ 297.083701] modprobe: ERROR: could not insert 'test_klp_callbacks_mod': No such device [ 297.085283] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 297.086834] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 297.087747] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 297.089548] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 297.090472] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 297.125134] % rmmod test_klp_callbacks_demo [ 297.322960] ===== TEST: multiple target modules ===== [ 297.405476] % modprobe test_klp_callbacks_busy block_transition=N [ 297.442617] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 297.443712] test_klp_callbacks_busy: busymod_work_func enter [ 297.444705] test_klp_callbacks_busy: busymod_work_func exit [ 297.536859] % modprobe test_klp_callbacks_demo [ 297.576336] livepatch: enabling patch 'test_klp_callbacks_demo' [ 297.577394] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 297.578270] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 297.586579] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 297.588360] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 297.589249] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 297.590713] livepatch: 'test_klp_callbacks_demo': patching complete [ 297.715566] % modprobe test_klp_callbacks_mod [ 297.750450] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 297.752138] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 297.753943] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 297.757397] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 297.797018] % rmmod test_klp_callbacks_mod [ 297.824692] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 297.825986] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 297.827447] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 297.828804] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 297.854445] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 297.856292] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 297.857203] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 297.858663] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 297.885787] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 297.886761] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 297.888248] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 297.911919] % rmmod test_klp_callbacks_demo [ 297.985493] % rmmod test_klp_callbacks_busy [ 298.014574] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 298.190883] ===== TEST: busy target module ===== [ 298.274318] % modprobe test_klp_callbacks_busy block_transition=Y [ 298.313443] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 298.314753] test_klp_callbacks_busy: busymod_work_func enter [ 298.410190] % modprobe test_klp_callbacks_demo [ 298.449980] livepatch: enabling patch 'test_klp_callbacks_demo' [ 298.450970] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 298.451795] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 298.459881] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 298.577719] % modprobe test_klp_callbacks_mod [ 298.614618] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 298.616031] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 298.618747] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 298.652275] % rmmod test_klp_callbacks_mod [ 298.679102] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 298.680302] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 298.681698] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 298.707383] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 298.709397] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 299.762919] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 299.763862] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 299.765347] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 299.806862] % rmmod test_klp_callbacks_demo [ 299.886630] % rmmod test_klp_callbacks_busy [ 299.929857] test_klp_callbacks_busy: busymod_work_func exit [ 299.931126] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 300.111905] ===== TEST: multiple livepatches ===== [ 300.197871] % modprobe test_klp_callbacks_demo [ 300.238052] livepatch: enabling patch 'test_klp_callbacks_demo' [ 300.239039] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 300.239926] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 301.785104] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 301.786052] livepatch: 'test_klp_callbacks_demo': patching complete [ 301.975370] % modprobe test_klp_callbacks_demo2 [ 302.014239] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 302.015238] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 302.016122] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 302.017823] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 302.018732] livepatch: 'test_klp_callbacks_demo2': patching complete [ 302.058271] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 302.060387] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 302.061323] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 303.768869] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 303.769864] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 303.864705] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 303.866321] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 303.867240] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 303.868986] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 303.869918] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 303.896467] % rmmod test_klp_callbacks_demo2 [ 303.971918] % rmmod test_klp_callbacks_demo [ 304.179808] ===== TEST: atomic replace ===== [ 304.265201] % modprobe test_klp_callbacks_demo [ 304.304978] livepatch: enabling patch 'test_klp_callbacks_demo' [ 304.306015] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 304.306891] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 305.752715] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 305.753693] livepatch: 'test_klp_callbacks_demo': patching complete [ 305.901045] % modprobe test_klp_callbacks_demo2 replace=1 [ 305.951862] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 305.952857] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 305.953743] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 305.955636] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 305.956549] livepatch: 'test_klp_callbacks_demo2': patching complete [ 305.994645] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 305.996354] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 305.997334] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 307.736717] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 307.737894] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 307.788548] % rmmod test_klp_callbacks_demo2 [ 307.886277] % rmmod test_klp_callbacks_demo [ 312.002050] livepatch: kernel.ftrace_enabled = 1 [ 312.048307] ===== TEST: livepatch interaction with ftrace_enabled sysctl ===== [ 312.101559] livepatch: kernel.ftrace_enabled = 0 [ 312.102704] % modprobe test_klp_livepatch [ 312.181451] livepatch: enabling patch 'test_klp_livepatch' [ 312.182905] livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16) [ 312.184271] livepatch: failed to patch object 'vmlinux' [ 312.185030] livepatch: failed to enable patch 'test_klp_livepatch' [ 312.186054] livepatch: 'test_klp_livepatch': unpatching complete [ 312.213443] modprobe: ERROR: could not insert 'test_klp_livepatch': Device or resource busy [ 312.264983] livepatch: kernel.ftrace_enabled = 1 [ 312.350455] % modprobe test_klp_livepatch [ 312.423461] livepatch: enabling patch 'test_klp_livepatch' [ 312.429808] livepatch: 'test_klp_livepatch': starting patching transition [ 313.752013] livepatch: 'test_klp_livepatch': patching complete [ 313.841868] livepatch: sysctl: setting key "kernel.ftrace_enabled": Device or resource busy [ 313.863868] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 313.865583] livepatch: 'test_klp_livepatch': starting unpatching transition [ 314.799799] livepatch: 'test_klp_livepatch': unpatching complete [ 314.847760] % rmmod test_klp_livepatch [ 318.584840] livepatch: kernel.ftrace_enabled = 1 [ 318.638732] ===== TEST: basic function patching ===== [ 318.777517] % modprobe test_klp_livepatch [ 318.852120] livepatch: enabling patch 'test_klp_livepatch' [ 318.859901] livepatch: 'test_klp_livepatch': starting patching transition [ 319.768604] livepatch: 'test_klp_livepatch': patching complete [ 319.922520] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 319.924235] livepatch: 'test_klp_livepatch': starting unpatching transition [ 319.951289] livepatch: 'test_klp_livepatch': unpatching complete [ 319.976171] % rmmod test_klp_livepatch [ 320.196784] ===== TEST: multiple livepatches ===== [ 320.286500] % modprobe test_klp_livepatch [ 320.357255] livepatch: enabling patch 'test_klp_livepatch' [ 320.363588] livepatch: 'test_klp_livepatch': starting patching transition [ 320.365669] livepatch: 'test_klp_livepatch': patching complete [ 320.425282] test_klp_livepatch: this has been live patched [ 320.540504] % modprobe test_klp_atomic_replace replace=0 [ 320.614124] livepatch: enabling patch 'test_klp_atomic_replace' [ 320.620953] livepatch: 'test_klp_atomic_replace': starting patching transition [ 321.751462] livepatch: 'test_klp_atomic_replace': patching complete [ 321.823480] test_klp_livepatch: this has been live patched [ 321.848745] test_klp_atomic_replace: this has been live patched [ 321.854516] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 321.856161] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 321.882238] livepatch: 'test_klp_atomic_replace': unpatching complete [ 321.905038] % rmmod test_klp_atomic_replace [ 321.980446] test_klp_livepatch: this has been live patched [ 322.011803] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 322.013763] livepatch: 'test_klp_livepatch': starting unpatching transition [ 322.041450] livepatch: 'test_klp_livepatch': unpatching complete [ 322.064303] % rmmod test_klp_livepatch [ 322.310432] ===== TEST: atomic replace livepatch ===== [ 322.395722] % modprobe test_klp_livepatch [ 322.467417] livepatch: enabling patch 'test_klp_livepatch' [ 322.473678] livepatch: 'test_klp_livepatch': starting patching transition [ 322.475440] livepatch: 'test_klp_livepatch': patching complete [ 322.532553] test_klp_livepatch: this has been live patched [ 322.647764] % modprobe test_klp_atomic_replace replace=1 [ 322.755581] livepatch: enabling patch 'test_klp_atomic_replace' [ 322.761963] livepatch: 'test_klp_atomic_replace': starting patching transition [ 323.764884] livepatch: 'test_klp_atomic_replace': patching complete [ 323.855076] test_klp_atomic_replace: this has been live patched [ 323.881929] % rmmod test_klp_livepatch [ 323.978134] test_klp_atomic_replace: this has been live patched [ 323.983296] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 323.985243] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 324.012364] livepatch: 'test_klp_atomic_replace': unpatching complete [ 324.035249] % rmmod test_klp_atomic_replace [ 327.557812] livepatch: kernel.ftrace_enabled = 1 [ 327.604770] ===== TEST: basic shadow variable API ===== [ 327.692027] % modprobe test_klp_shadow_vars [ 327.731248] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 327.732304] test_klp_shadow_vars: got expected NULL result [ 327.733863] test_klp_shadow_vars: shadow_ctor: PTR3 -> PTR2 [ 327.734819] 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 [ 327.736582] test_klp_shadow_vars: shadow_ctor: PTR6 -> PTR5 [ 327.737351] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR1, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR5 = PTR6 [ 327.739101] test_klp_shadow_vars: shadow_ctor: PTR8 -> PTR7 [ 327.739935] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR7 = PTR8 [ 327.741640] test_klp_shadow_vars: shadow_ctor: PTR11 -> PTR10 [ 327.742425] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR10 = PTR11 [ 327.744137] test_klp_shadow_vars: shadow_ctor: PTR13 -> PTR12 [ 327.744986] 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 [ 327.746766] test_klp_shadow_vars: shadow_ctor: PTR16 -> PTR15 [ 327.747589] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR14, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR15 = PTR16 [ 327.749266] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR3 [ 327.750265] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 327.751172] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 327.752171] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 327.753074] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR8 [ 327.754071] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 327.754981] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 327.755985] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 327.756908] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR13 [ 327.757930] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 327.758857] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 327.759871] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 327.760797] 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 [ 327.762526] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 327.763391] 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 [ 327.765132] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 327.766038] 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 [ 327.767827] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 327.768753] test_klp_shadow_vars: shadow_dtor(obj=PTR1, shadow_data=PTR3) [ 327.770172] test_klp_shadow_vars: klp_shadow_free(obj=PTR1, id=0x1234, dtor=PTR17) [ 327.771233] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 327.772232] test_klp_shadow_vars: got expected NULL result [ 327.773048] test_klp_shadow_vars: shadow_dtor(obj=PTR9, shadow_data=PTR8) [ 327.774022] test_klp_shadow_vars: klp_shadow_free(obj=PTR9, id=0x1234, dtor=PTR17) [ 327.775070] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR0 [ 327.776068] test_klp_shadow_vars: got expected NULL result [ 327.776885] test_klp_shadow_vars: shadow_dtor(obj=PTR14, shadow_data=PTR13) [ 327.777878] test_klp_shadow_vars: klp_shadow_free(obj=PTR14, id=0x1234, dtor=PTR17) [ 327.778939] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR0 [ 327.779947] test_klp_shadow_vars: got expected NULL result [ 327.780774] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 327.781768] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 327.782674] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 327.783682] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 327.784601] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 327.785622] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 327.786597] test_klp_shadow_vars: klp_shadow_free_all(id=0x1235, dtor=PTR0) [ 327.787580] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR0 [ 327.788574] test_klp_shadow_vars: got expected NULL result [ 327.789358] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR0 [ 327.790368] test_klp_shadow_vars: got expected NULL result [ 327.791183] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR0 [ 327.792192] test_klp_shadow_vars: got expected NULL result [ 327.825144] % rmmod test_klp_shadow_vars [ 331.329912] livepatch: kernel.ftrace_enabled = 1 [ 331.378331] ===== TEST: system state modification ===== [ 331.467133] % modprobe test_klp_state [ 331.506222] livepatch: enabling patch 'test_klp_state' [ 331.507085] test_klp_state: pre_patch_callback: vmlinux [ 331.508573] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 331.509803] livepatch: 'test_klp_state': starting patching transition [ 331.511438] test_klp_state: post_patch_callback: vmlinux [ 331.512172] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 331.513145] livepatch: 'test_klp_state': patching complete [ 331.549722] % echo 0 > /sys/kernel/livepatch/test_klp_state/enabled [ 331.551292] livepatch: 'test_klp_state': initializing unpatching transition [ 331.552373] test_klp_state: pre_unpatch_callback: vmlinux [ 331.553117] test_klp_state: restore_console_loglevel: restoring console_loglevel [ 331.554213] livepatch: 'test_klp_state': starting unpatching transition [ 331.555871] test_klp_state: post_unpatch_callback: vmlinux [ 331.557159] test_klp_state: free_loglevel_state: freeing space for the stored console_loglevel [ 331.558397] livepatch: 'test_klp_state': unpatching complete [ 331.580683] % rmmod test_klp_state [ 331.781929] ===== TEST: taking over system state modification ===== [ 331.873929] % modprobe test_klp_state [ 331.911495] livepatch: enabling patch 'test_klp_state' [ 331.912385] test_klp_state: pre_patch_callback: vmlinux [ 331.913106] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 331.914324] livepatch: 'test_klp_state': starting patching transition [ 331.915853] test_klp_state: post_patch_callback: vmlinux [ 331.916631] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 331.917584] livepatch: 'test_klp_state': patching complete [ 332.039297] % modprobe test_klp_state2 [ 332.078713] livepatch: enabling patch 'test_klp_state2' [ 332.079539] livepatch: 'test_klp_state2': initializing patching transition [ 332.080940] test_klp_state2: pre_patch_callback: vmlinux [ 332.081736] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 332.083029] livepatch: 'test_klp_state2': starting patching transition [ 332.084526] livepatch: 'test_klp_state2': completing patching transition [ 332.085649] test_klp_state2: post_patch_callback: vmlinux [ 332.086496] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 332.087644] livepatch: 'test_klp_state2': patching complete [ 332.147024] % rmmod test_klp_state [ 332.213103] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 332.214741] livepatch: 'test_klp_state2': initializing unpatching transition [ 332.215852] test_klp_state2: pre_unpatch_callback: vmlinux [ 332.216644] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 332.217682] livepatch: 'test_klp_state2': starting unpatching transition [ 332.219402] test_klp_state2: post_unpatch_callback: vmlinux [ 332.220233] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 332.221620] livepatch: 'test_klp_state2': unpatching complete [ 332.244919] % rmmod test_klp_state2 [ 332.447848] ===== TEST: compatible cumulative livepatches ===== [ 332.530887] % modprobe test_klp_state2 [ 332.570289] livepatch: enabling patch 'test_klp_state2' [ 332.571196] test_klp_state2: pre_patch_callback: vmlinux [ 332.571950] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 332.573177] livepatch: 'test_klp_state2': starting patching transition [ 332.574748] test_klp_state2: post_patch_callback: vmlinux [ 332.575557] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 332.576529] livepatch: 'test_klp_state2': patching complete [ 332.697494] % modprobe test_klp_state3 [ 332.736715] livepatch: enabling patch 'test_klp_state3' [ 332.737530] livepatch: 'test_klp_state3': initializing patching transition [ 332.738579] test_klp_state3: pre_patch_callback: vmlinux [ 332.739344] test_klp_state3: allocate_loglevel_state: space to store console_loglevel already allocated [ 332.740621] livepatch: 'test_klp_state3': starting patching transition [ 332.742149] livepatch: 'test_klp_state3': completing patching transition [ 332.743243] test_klp_state3: post_patch_callback: vmlinux [ 332.743981] test_klp_state3: fix_console_loglevel: taking over the console_loglevel change [ 332.745133] livepatch: 'test_klp_state3': patching complete [ 332.804537] % rmmod test_klp_state2 [ 332.961419] % modprobe test_klp_state2 [ 333.007383] livepatch: enabling patch 'test_klp_state2' [ 333.008261] livepatch: 'test_klp_state2': initializing patching transition [ 333.009316] test_klp_state2: pre_patch_callback: vmlinux [ 333.010041] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 333.011343] livepatch: 'test_klp_state2': starting patching transition [ 334.742157] livepatch: 'test_klp_state2': completing patching transition [ 334.743673] test_klp_state2: post_patch_callback: vmlinux [ 334.744496] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 334.745640] livepatch: 'test_klp_state2': patching complete [ 334.768242] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 334.769667] livepatch: 'test_klp_state2': initializing unpatching transition [ 334.770757] test_klp_state2: pre_unpatch_callback: vmlinux [ 334.771559] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 334.772594] livepatch: 'test_klp_state2': starting unpatching transition [ 334.774248] test_klp_state2: post_unpatch_callback: vmlinux [ 334.775068] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 334.776483] livepatch: 'test_klp_state2': unpatching complete [ 334.798542] % rmmod test_klp_state2 [ 334.878433] % rmmod test_klp_state3 [ 335.079507] ===== TEST: incompatible cumulative livepatches ===== [ 335.168657] % modprobe test_klp_state2 [ 335.207045] livepatch: enabling patch 'test_klp_state2' [ 335.207960] test_klp_state2: pre_patch_callback: vmlinux [ 335.208707] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 335.209925] livepatch: 'test_klp_state2': starting patching transition [ 335.211476] test_klp_state2: post_patch_callback: vmlinux [ 335.212283] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 335.213261] livepatch: 'test_klp_state2': patching complete [ 335.249658] % modprobe test_klp_state [ 335.288734] livepatch: Livepatch patch (test_klp_state) is not compatible with the already installed livepatches. [ 335.322685] modprobe: ERROR: could not insert 'test_klp_state': Invalid argument [ 335.324372] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 335.325750] livepatch: 'test_klp_state2': initializing unpatching transition [ 335.326851] test_klp_state2: pre_unpatch_callback: vmlinux [ 335.327633] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 335.328671] livepatch: 'test_klp_state2': starting unpatching transition [ 335.330331] test_klp_state2: post_unpatch_callback: vmlinux [ 335.331167] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 335.332526] livepatch: 'test_klp_state2': unpatching complete [ 335.355515] % rmmod test_klp_state2