[ 246.303332] Running test [R:12695763 T:6 - Livepatch kselftests - Kernel: 5.14.0-171.mr1410_221002_1052.el9.x86_64+debug] [ 283.813827] livepatch: kernel.ftrace_enabled = 1 [ 283.851652] ===== TEST: target module before livepatch ===== [ 283.920930] % modprobe test_klp_callbacks_mod [ 283.953500] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 284.034688] % modprobe test_klp_callbacks_demo [ 284.062886] test_klp_callbacks_demo: tainting kernel with TAINT_LIVEPATCH [ 284.067605] livepatch: enabling patch 'test_klp_callbacks_demo' [ 284.070685] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 284.072686] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 284.075974] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 285.423909] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 285.426446] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 285.429764] livepatch: 'test_klp_callbacks_demo': patching complete [ 285.465941] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 285.470644] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 285.473345] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 285.476733] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 285.482804] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 285.484928] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 285.488330] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 285.509785] % rmmod test_klp_callbacks_demo [ 285.576683] % rmmod test_klp_callbacks_mod [ 285.599790] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 285.740443] ===== TEST: module_coming notifier ===== [ 285.805442] % modprobe test_klp_callbacks_demo [ 285.834615] livepatch: enabling patch 'test_klp_callbacks_demo' [ 285.836807] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 285.838756] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 285.844060] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 285.845887] livepatch: 'test_klp_callbacks_demo': patching complete [ 285.938190] % modprobe test_klp_callbacks_mod [ 285.970028] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 285.975520] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 285.984310] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 285.994775] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 286.010889] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 286.017636] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 286.022135] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 286.027678] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 286.035415] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 286.040229] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 286.046289] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 286.068909] % rmmod test_klp_callbacks_demo [ 286.132053] % rmmod test_klp_callbacks_mod [ 286.158149] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 286.297511] ===== TEST: module_going notifier ===== [ 286.366201] % modprobe test_klp_callbacks_mod [ 286.398063] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 286.478050] % modprobe test_klp_callbacks_demo [ 286.510419] livepatch: enabling patch 'test_klp_callbacks_demo' [ 286.514936] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 286.519162] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 286.524558] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 286.531910] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 286.536273] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 286.541773] livepatch: 'test_klp_callbacks_demo': patching complete [ 286.594405] % rmmod test_klp_callbacks_mod [ 286.621317] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 286.626432] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 286.631967] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 286.637286] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 286.665544] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 286.671467] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 286.676076] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 288.430847] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 288.435845] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 288.545009] % rmmod test_klp_callbacks_demo [ 288.709580] ===== TEST: module_coming and module_going notifiers ===== [ 288.782013] % modprobe test_klp_callbacks_demo [ 288.814935] livepatch: enabling patch 'test_klp_callbacks_demo' [ 288.820072] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 288.824668] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 288.832662] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 288.837418] livepatch: 'test_klp_callbacks_demo': patching complete [ 288.933080] % modprobe test_klp_callbacks_mod [ 288.964533] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 288.970112] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 288.978895] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 288.989302] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 289.022161] % rmmod test_klp_callbacks_mod [ 289.048698] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 289.054091] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 289.059720] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 289.065108] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 289.093617] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 289.099898] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 289.104430] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 289.111998] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 289.116535] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 289.139883] % rmmod test_klp_callbacks_demo [ 289.307436] ===== TEST: target module not present ===== [ 289.378904] % modprobe test_klp_callbacks_demo [ 289.412432] livepatch: enabling patch 'test_klp_callbacks_demo' [ 289.417332] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 289.421754] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 289.429611] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 289.434402] livepatch: 'test_klp_callbacks_demo': patching complete [ 289.468960] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 289.475242] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 289.479790] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 289.487400] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 289.492257] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 289.515272] % rmmod test_klp_callbacks_demo [ 289.671814] ===== TEST: pre-patch callback -ENODEV ===== [ 289.741547] % modprobe test_klp_callbacks_mod [ 289.773755] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 289.789163] % modprobe test_klp_callbacks_demo pre_patch_ret=-19 [ 289.822514] livepatch: enabling patch 'test_klp_callbacks_demo' [ 289.827095] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 289.831338] livepatch: pre-patch callback failed for object 'vmlinux' [ 289.835668] livepatch: failed to enable patch 'test_klp_callbacks_demo' [ 289.840977] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 289.875651] modprobe: ERROR: could not insert 'test_klp_callbacks_demo': No such device [ 289.898502] % rmmod test_klp_callbacks_mod [ 289.924708] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 290.062807] ===== TEST: module_coming + pre-patch callback -ENODEV ===== [ 290.132125] % modprobe test_klp_callbacks_demo [ 290.164374] livepatch: enabling patch 'test_klp_callbacks_demo' [ 290.168939] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 290.173173] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 290.180569] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 290.185071] livepatch: 'test_klp_callbacks_demo': patching complete [ 290.217736] % echo -19 > /sys/module/test_klp_callbacks_demo/parameters/pre_patch_ret [ 290.241794] % modprobe test_klp_callbacks_mod [ 290.272948] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 290.278231] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 290.286506] livepatch: pre-patch callback failed for object 'test_klp_callbacks_mod' [ 290.291141] livepatch: patch 'test_klp_callbacks_demo' failed for module 'test_klp_callbacks_mod', refusing to load module 'test_klp_callbacks_mod' [ 290.329611] modprobe: ERROR: could not insert 'test_klp_callbacks_mod': No such device [ 290.335343] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 290.341005] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 290.345425] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 291.438489] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 291.443055] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 291.521880] % rmmod test_klp_callbacks_demo [ 291.686281] ===== TEST: multiple target modules ===== [ 291.756368] % modprobe test_klp_callbacks_busy block_transition=N [ 291.788689] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 291.794193] test_klp_callbacks_busy: busymod_work_func enter [ 291.798790] test_klp_callbacks_busy: busymod_work_func exit [ 291.876336] % modprobe test_klp_callbacks_demo [ 291.911241] livepatch: enabling patch 'test_klp_callbacks_demo' [ 291.915784] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 291.919959] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 291.930847] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 291.938285] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 291.942525] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 291.947916] livepatch: 'test_klp_callbacks_demo': patching complete [ 292.044724] % modprobe test_klp_callbacks_mod [ 292.076859] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 292.082444] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 292.091097] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 292.102209] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 292.134395] % rmmod test_klp_callbacks_mod [ 292.160905] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 292.166627] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 292.172347] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 292.177896] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 292.205802] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 292.212319] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 292.217117] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 292.223058] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 292.252879] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 292.257665] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 292.263549] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 292.291135] % rmmod test_klp_callbacks_demo [ 292.360959] % rmmod test_klp_callbacks_busy [ 292.387340] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 292.535231] ===== TEST: busy target module ===== [ 292.603727] % modprobe test_klp_callbacks_busy block_transition=Y [ 292.636838] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 292.642207] test_klp_callbacks_busy: busymod_work_func enter [ 292.719539] % modprobe test_klp_callbacks_demo [ 292.753059] livepatch: enabling patch 'test_klp_callbacks_demo' [ 292.757711] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 292.761969] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 292.772137] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 292.871783] % modprobe test_klp_callbacks_mod [ 292.902324] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 292.907795] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 292.917781] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 292.950214] % rmmod test_klp_callbacks_mod [ 292.977530] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 292.982837] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 292.988419] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 293.015663] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 293.022391] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 294.474630] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 294.479595] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 294.485464] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 294.543651] % rmmod test_klp_callbacks_demo [ 294.613534] % rmmod test_klp_callbacks_busy [ 294.644164] test_klp_callbacks_busy: busymod_work_func exit [ 294.649005] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 294.802818] ===== TEST: multiple livepatches ===== [ 294.874281] % modprobe test_klp_callbacks_demo [ 294.907955] livepatch: enabling patch 'test_klp_callbacks_demo' [ 294.912617] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 294.916867] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 294.924368] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 294.928837] livepatch: 'test_klp_callbacks_demo': patching complete [ 295.026690] % modprobe test_klp_callbacks_demo2 [ 295.060535] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 295.065187] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 295.069402] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 295.076823] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 295.081384] livepatch: 'test_klp_callbacks_demo2': patching complete [ 295.114552] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 295.120588] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 295.124940] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 295.132623] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 295.137265] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 295.143297] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 295.149055] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 295.153587] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 295.161195] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 295.165849] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 295.189605] % rmmod test_klp_callbacks_demo2 [ 295.257569] % rmmod test_klp_callbacks_demo [ 295.427461] ===== TEST: atomic replace ===== [ 295.496767] % modprobe test_klp_callbacks_demo [ 295.531033] livepatch: enabling patch 'test_klp_callbacks_demo' [ 295.535575] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 295.539699] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 295.547124] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 295.551310] livepatch: 'test_klp_callbacks_demo': patching complete [ 295.650536] % modprobe test_klp_callbacks_demo2 replace=1 [ 295.685128] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 295.689556] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 295.693556] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 295.701058] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 295.705271] livepatch: 'test_klp_callbacks_demo2': patching complete [ 295.737805] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 295.743593] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 295.747627] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 295.754752] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 295.758974] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 295.782779] % rmmod test_klp_callbacks_demo2 [ 295.852866] % rmmod test_klp_callbacks_demo [ 299.506636] livepatch: kernel.ftrace_enabled = 1 [ 299.553859] ===== TEST: livepatch interaction with ftrace_enabled sysctl ===== [ 299.596786] livepatch: kernel.ftrace_enabled = 0 [ 299.601678] % modprobe test_klp_livepatch [ 299.667113] livepatch: enabling patch 'test_klp_livepatch' [ 299.672489] livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16) [ 299.678480] livepatch: failed to patch object 'vmlinux' [ 299.682430] livepatch: failed to enable patch 'test_klp_livepatch' [ 299.687761] livepatch: 'test_klp_livepatch': unpatching complete [ 299.728824] modprobe: ERROR: could not insert 'test_klp_livepatch': Device or resource busy [ 299.774557] livepatch: kernel.ftrace_enabled = 1 [ 299.845781] % modprobe test_klp_livepatch [ 299.909605] livepatch: enabling patch 'test_klp_livepatch' [ 299.918313] livepatch: 'test_klp_livepatch': starting patching transition [ 299.926384] livepatch: 'test_klp_livepatch': patching complete [ 300.017150] livepatch: sysctl: setting key "kernel.ftrace_enabled": Device or resource busy [ 300.022692] kernel.ftrace_enabled = 1 [ 300.043880] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 300.050336] livepatch: 'test_klp_livepatch': starting unpatching transition [ 300.080048] livepatch: 'test_klp_livepatch': unpatching complete [ 300.105339] % rmmod test_klp_livepatch [ 303.261833] livepatch: kernel.ftrace_enabled = 1 [ 303.302073] ===== TEST: basic function patching ===== [ 303.371804] % modprobe test_klp_livepatch [ 303.431483] livepatch: enabling patch 'test_klp_livepatch' [ 303.439719] livepatch: 'test_klp_livepatch': starting patching transition [ 303.446433] livepatch: 'test_klp_livepatch': patching complete [ 303.498421] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 303.503958] livepatch: 'test_klp_livepatch': starting unpatching transition [ 303.533100] livepatch: 'test_klp_livepatch': unpatching complete [ 303.555507] % rmmod test_klp_livepatch [ 303.735245] ===== TEST: multiple livepatches ===== [ 303.804465] % modprobe test_klp_livepatch [ 303.863348] livepatch: enabling patch 'test_klp_livepatch' [ 303.871681] livepatch: 'test_klp_livepatch': starting patching transition [ 303.878890] livepatch: 'test_klp_livepatch': patching complete [ 303.930158] test_klp_livepatch: this has been live patched [ 304.021902] % modprobe test_klp_atomic_replace replace=0 [ 304.083311] livepatch: enabling patch 'test_klp_atomic_replace' [ 304.091950] livepatch: 'test_klp_atomic_replace': starting patching transition [ 305.390693] livepatch: 'test_klp_atomic_replace': patching complete [ 305.493529] test_klp_livepatch: this has been live patched [ 305.519651] test_klp_atomic_replace: this has been live patched [ 305.528162] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 305.533946] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 305.565599] livepatch: 'test_klp_atomic_replace': unpatching complete [ 305.588538] % rmmod test_klp_atomic_replace [ 305.660341] test_klp_livepatch: this has been live patched [ 305.687913] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 305.693734] livepatch: 'test_klp_livepatch': starting unpatching transition [ 305.721811] livepatch: 'test_klp_livepatch': unpatching complete [ 305.743660] % rmmod test_klp_livepatch [ 305.944906] ===== TEST: atomic replace livepatch ===== [ 306.011175] % modprobe test_klp_livepatch [ 306.070669] livepatch: enabling patch 'test_klp_livepatch' [ 306.078795] livepatch: 'test_klp_livepatch': starting patching transition [ 306.085520] livepatch: 'test_klp_livepatch': patching complete [ 306.137072] test_klp_livepatch: this has been live patched [ 306.228791] % modprobe test_klp_atomic_replace replace=1 [ 306.317011] livepatch: enabling patch 'test_klp_atomic_replace' [ 306.325690] livepatch: 'test_klp_atomic_replace': starting patching transition [ 306.356835] livepatch: 'test_klp_atomic_replace': patching complete [ 306.427246] test_klp_atomic_replace: this has been live patched [ 306.452205] % rmmod test_klp_livepatch [ 306.544218] test_klp_atomic_replace: this has been live patched [ 306.551948] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 306.557377] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 306.586869] livepatch: 'test_klp_atomic_replace': unpatching complete [ 306.611942] % rmmod test_klp_atomic_replace [ 309.781118] livepatch: kernel.ftrace_enabled = 1 [ 309.821333] ===== TEST: basic shadow variable API ===== [ 309.896574] % modprobe test_klp_shadow_vars [ 309.931330] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 309.935813] test_klp_shadow_vars: got expected NULL result [ 309.941150] test_klp_shadow_vars: shadow_ctor: PTR3 -> PTR2 [ 309.945706] 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 [ 309.954266] test_klp_shadow_vars: shadow_ctor: PTR6 -> PTR5 [ 309.958163] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR1, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR5 = PTR6 [ 309.966747] test_klp_shadow_vars: shadow_ctor: PTR8 -> PTR7 [ 309.970756] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR7 = PTR8 [ 309.979326] test_klp_shadow_vars: shadow_ctor: PTR11 -> PTR10 [ 309.983409] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR10 = PTR11 [ 309.992196] test_klp_shadow_vars: shadow_ctor: PTR13 -> PTR12 [ 309.996360] 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 [ 310.005597] test_klp_shadow_vars: shadow_ctor: PTR16 -> PTR15 [ 310.009876] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR14, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR15 = PTR16 [ 310.018550] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR3 [ 310.023253] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 310.027763] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 310.032461] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 310.036930] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR8 [ 310.041584] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 310.046043] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 310.050754] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 310.055245] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR13 [ 310.059934] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 310.064421] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 310.069119] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 310.073666] 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 [ 310.082679] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 310.087264] 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 [ 310.096401] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 310.101046] 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 [ 310.110445] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 310.115255] test_klp_shadow_vars: shadow_dtor(obj=PTR1, shadow_data=PTR3) [ 310.120610] test_klp_shadow_vars: klp_shadow_free(obj=PTR1, id=0x1234, dtor=PTR17) [ 310.125770] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 310.130735] test_klp_shadow_vars: got expected NULL result [ 310.135242] test_klp_shadow_vars: shadow_dtor(obj=PTR9, shadow_data=PTR8) [ 310.140124] test_klp_shadow_vars: klp_shadow_free(obj=PTR9, id=0x1234, dtor=PTR17) [ 310.145206] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR0 [ 310.150107] test_klp_shadow_vars: got expected NULL result [ 310.154594] test_klp_shadow_vars: shadow_dtor(obj=PTR14, shadow_data=PTR13) [ 310.159506] test_klp_shadow_vars: klp_shadow_free(obj=PTR14, id=0x1234, dtor=PTR17) [ 310.164565] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR0 [ 310.169438] test_klp_shadow_vars: got expected NULL result [ 310.173849] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 310.178591] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 310.183077] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 310.187799] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 310.192302] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 310.196802] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 310.201276] test_klp_shadow_vars: klp_shadow_free_all(id=0x1235, dtor=PTR0) [ 310.205823] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR0 [ 310.210321] test_klp_shadow_vars: got expected NULL result [ 310.214401] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR0 [ 310.218849] test_klp_shadow_vars: got expected NULL result [ 310.222817] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR0 [ 310.227223] test_klp_shadow_vars: got expected NULL result [ 310.257621] % rmmod test_klp_shadow_vars [ 313.352405] livepatch: kernel.ftrace_enabled = 1 [ 313.393672] ===== TEST: system state modification ===== [ 313.460929] % modprobe test_klp_state [ 313.494085] livepatch: enabling patch 'test_klp_state' [ 313.497934] test_klp_state: pre_patch_callback: vmlinux [ 313.502017] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 313.506549] livepatch: 'test_klp_state': starting patching transition [ 313.512948] test_klp_state: post_patch_callback: vmlinux [ 313.516625] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 313.520626] livepatch: 'test_klp_state': patching complete [ 313.553480] % echo 0 > /sys/kernel/livepatch/test_klp_state/enabled [ 313.558218] livepatch: 'test_klp_state': initializing unpatching transition [ 313.562669] test_klp_state: pre_unpatch_callback: vmlinux [ 313.566349] test_klp_state: restore_console_loglevel: restoring console_loglevel [ 313.570503] livepatch: 'test_klp_state': starting unpatching transition [ 313.576898] test_klp_state: post_unpatch_callback: vmlinux [ 313.580913] test_klp_state: free_loglevel_state: freeing space for the stored console_loglevel [ 313.585822] livepatch: 'test_klp_state': unpatching complete [ 313.608955] % rmmod test_klp_state [ 313.769819] ===== TEST: taking over system state modification ===== [ 313.836896] % modprobe test_klp_state [ 313.868324] livepatch: enabling patch 'test_klp_state' [ 313.872195] test_klp_state: pre_patch_callback: vmlinux [ 313.876354] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 313.880755] livepatch: 'test_klp_state': starting patching transition [ 313.887307] test_klp_state: post_patch_callback: vmlinux [ 313.890866] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 313.894767] livepatch: 'test_klp_state': patching complete [ 314.000174] % modprobe test_klp_state2 [ 314.033738] livepatch: enabling patch 'test_klp_state2' [ 314.037485] livepatch: 'test_klp_state2': initializing patching transition [ 314.041677] test_klp_state2: pre_patch_callback: vmlinux [ 314.045248] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 314.049908] livepatch: 'test_klp_state2': starting patching transition [ 314.056740] livepatch: 'test_klp_state2': completing patching transition [ 314.061424] test_klp_state2: post_patch_callback: vmlinux [ 314.065149] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 314.069561] livepatch: 'test_klp_state2': patching complete [ 314.119590] % rmmod test_klp_state [ 314.169031] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 314.174721] livepatch: 'test_klp_state2': initializing unpatching transition [ 314.179323] test_klp_state2: pre_unpatch_callback: vmlinux [ 314.183124] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 314.187436] livepatch: 'test_klp_state2': starting unpatching transition [ 314.194684] test_klp_state2: post_unpatch_callback: vmlinux [ 314.198757] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 314.203485] livepatch: 'test_klp_state2': unpatching complete [ 314.225400] % rmmod test_klp_state2 [ 314.392727] ===== TEST: compatible cumulative livepatches ===== [ 314.462238] % modprobe test_klp_state2 [ 314.499326] livepatch: enabling patch 'test_klp_state2' [ 314.503695] test_klp_state2: pre_patch_callback: vmlinux [ 314.508298] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 314.513551] livepatch: 'test_klp_state2': starting patching transition [ 314.520731] test_klp_state2: post_patch_callback: vmlinux [ 314.524628] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 314.528821] livepatch: 'test_klp_state2': patching complete [ 314.628359] % modprobe test_klp_state3 [ 314.661967] livepatch: enabling patch 'test_klp_state3' [ 314.665946] livepatch: 'test_klp_state3': initializing patching transition [ 314.670490] test_klp_state3: pre_patch_callback: vmlinux [ 314.674316] test_klp_state3: allocate_loglevel_state: space to store console_loglevel already allocated [ 314.679226] livepatch: 'test_klp_state3': starting patching transition [ 314.686189] livepatch: 'test_klp_state3': completing patching transition [ 314.691016] test_klp_state3: post_patch_callback: vmlinux [ 314.694863] test_klp_state3: fix_console_loglevel: taking over the console_loglevel change [ 314.699444] livepatch: 'test_klp_state3': patching complete [ 314.751092] % rmmod test_klp_state2 [ 314.867871] % modprobe test_klp_state2 [ 314.899940] livepatch: enabling patch 'test_klp_state2' [ 314.903812] livepatch: 'test_klp_state2': initializing patching transition [ 314.908216] test_klp_state2: pre_patch_callback: vmlinux [ 314.911963] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 314.916789] livepatch: 'test_klp_state2': starting patching transition [ 314.923572] livepatch: 'test_klp_state2': completing patching transition [ 314.928240] test_klp_state2: post_patch_callback: vmlinux [ 314.932067] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 314.936628] livepatch: 'test_klp_state2': patching complete [ 314.970888] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 314.976323] livepatch: 'test_klp_state2': initializing unpatching transition [ 314.981549] test_klp_state2: pre_unpatch_callback: vmlinux [ 314.985622] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 314.990314] livepatch: 'test_klp_state2': starting unpatching transition [ 314.998388] test_klp_state2: post_unpatch_callback: vmlinux [ 315.002591] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 315.007764] livepatch: 'test_klp_state2': unpatching complete [ 315.032853] % rmmod test_klp_state2 [ 315.101963] % rmmod test_klp_state3 [ 315.270837] ===== TEST: incompatible cumulative livepatches ===== [ 315.341593] % modprobe test_klp_state2 [ 315.374728] livepatch: enabling patch 'test_klp_state2' [ 315.379021] test_klp_state2: pre_patch_callback: vmlinux [ 315.383588] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 315.388346] livepatch: 'test_klp_state2': starting patching transition [ 315.395288] test_klp_state2: post_patch_callback: vmlinux [ 315.399130] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 315.403278] livepatch: 'test_klp_state2': patching complete [ 315.435415] % modprobe test_klp_state [ 315.467276] livepatch: Livepatch patch (test_klp_state) is not compatible with the already installed livepatches. [ 315.501394] modprobe: ERROR: could not insert 'test_klp_state': Invalid argument [ 315.507508] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 315.512691] livepatch: 'test_klp_state2': initializing unpatching transition [ 315.517845] test_klp_state2: pre_unpatch_callback: vmlinux [ 315.521991] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 315.526709] livepatch: 'test_klp_state2': starting unpatching transition [ 315.534187] test_klp_state2: post_unpatch_callback: vmlinux [ 315.538221] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 315.543045] livepatch: 'test_klp_state2': unpatching complete [ 315.567469] % rmmod test_klp_state2