[ 225.273926] Running test [R:13260147 T:7 - Livepatch kselftests - Kernel: 5.14.0-239.1872_752481554.el9.x86_64+debug] [-- MARK -- Thu Jan 19 23:20:00 2023] [ 272.378728] livepatch: kernel.ftrace_enabled = 1 [ 272.421174] ===== TEST: target module before livepatch ===== [ 272.496185] % modprobe test_klp_callbacks_mod [ 272.540188] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 272.623598] % modprobe test_klp_callbacks_demo [ 272.654483] test_klp_callbacks_demo: tainting kernel with TAINT_LIVEPATCH [ 272.657926] livepatch: enabling patch 'test_klp_callbacks_demo' [ 272.658974] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 272.659758] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 272.661028] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 272.663729] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 272.664525] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 272.665809] livepatch: 'test_klp_callbacks_demo': patching complete [ 272.697210] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 272.699939] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 272.700825] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 272.702126] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 272.704557] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 272.705374] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 272.706852] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 272.727803] % rmmod test_klp_callbacks_demo [ 272.793058] % rmmod test_klp_callbacks_mod [ 272.817330] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 272.968372] ===== TEST: module_coming notifier ===== [ 273.041349] % modprobe test_klp_callbacks_demo [ 273.075728] livepatch: enabling patch 'test_klp_callbacks_demo' [ 273.076632] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 273.077361] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 273.079340] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 273.080156] livepatch: 'test_klp_callbacks_demo': patching complete [ 273.186140] % modprobe test_klp_callbacks_mod [ 273.217970] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 273.219201] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 273.220706] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 273.223053] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 273.234846] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 273.236490] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 273.237264] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 273.238558] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 274.809327] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 274.810177] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 274.811479] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 274.896200] % rmmod test_klp_callbacks_demo [ 274.963789] % rmmod test_klp_callbacks_mod [ 274.988479] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 275.134291] ===== TEST: module_going notifier ===== [ 275.208457] % modprobe test_klp_callbacks_mod [ 275.241443] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 275.323903] % modprobe test_klp_callbacks_demo [ 275.357421] livepatch: enabling patch 'test_klp_callbacks_demo' [ 275.358324] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 275.359053] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 275.360553] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 276.791849] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 276.792715] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 276.794030] livepatch: 'test_klp_callbacks_demo': patching complete [ 276.924693] % rmmod test_klp_callbacks_mod [ 276.949434] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 276.950548] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 276.951852] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 276.953064] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 276.980762] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 276.982440] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 276.983314] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 277.815512] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 277.816386] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 277.946362] % rmmod test_klp_callbacks_demo [ 278.129379] ===== TEST: module_coming and module_going notifiers ===== [ 278.204683] % modprobe test_klp_callbacks_demo [ 278.238611] livepatch: enabling patch 'test_klp_callbacks_demo' [ 278.239681] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 278.240466] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 278.242170] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 278.242918] livepatch: 'test_klp_callbacks_demo': patching complete [ 278.351649] % modprobe test_klp_callbacks_mod [ 278.383822] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 278.385305] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 278.386804] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 278.389192] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 278.422442] % rmmod test_klp_callbacks_mod [ 278.449937] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 278.451167] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 278.452492] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 278.453715] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 278.478907] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 278.480807] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 278.481681] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 278.484576] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 278.485550] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 278.507490] % rmmod test_klp_callbacks_demo [ 278.687392] ===== TEST: target module not present ===== [ 278.763116] % modprobe test_klp_callbacks_demo [ 278.797256] livepatch: enabling patch 'test_klp_callbacks_demo' [ 278.798352] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 278.799138] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 278.803713] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 278.804526] livepatch: 'test_klp_callbacks_demo': patching complete [ 278.838079] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 278.839642] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 278.840469] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 278.842821] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 278.843661] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 278.864411] % rmmod test_klp_callbacks_demo [ 279.041280] ===== TEST: pre-patch callback -ENODEV ===== [ 279.118687] % modprobe test_klp_callbacks_mod [ 279.154089] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 279.165467] % modprobe test_klp_callbacks_demo pre_patch_ret=-19 [ 279.199436] livepatch: enabling patch 'test_klp_callbacks_demo' [ 279.200360] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 279.201129] livepatch: pre-patch callback failed for object 'vmlinux' [ 279.201903] livepatch: failed to enable patch 'test_klp_callbacks_demo' [ 279.203362] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 279.234477] modprobe: ERROR: could not insert 'test_klp_callbacks_demo': No such device [ 279.256851] % rmmod test_klp_callbacks_mod [ 279.283640] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 279.446017] ===== TEST: module_coming + pre-patch callback -ENODEV ===== [ 279.521640] % modprobe test_klp_callbacks_demo [ 279.556805] livepatch: enabling patch 'test_klp_callbacks_demo' [ 279.557710] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 279.558486] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 279.560071] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 279.560827] livepatch: 'test_klp_callbacks_demo': patching complete [ 279.595252] % echo -19 > /sys/module/test_klp_callbacks_demo/parameters/pre_patch_ret [ 279.616595] % modprobe test_klp_callbacks_mod [ 279.650195] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 279.651488] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 279.652977] livepatch: pre-patch callback failed for object 'test_klp_callbacks_mod' [ 279.653951] livepatch: patch 'test_klp_callbacks_demo' failed for module 'test_klp_callbacks_mod', refusing to load module 'test_klp_callbacks_mod' [ 279.682768] modprobe: ERROR: could not insert 'test_klp_callbacks_mod': No such device [ 279.684327] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 279.685735] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 279.686554] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 279.688226] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 279.689049] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 279.709672] % rmmod test_klp_callbacks_demo [ 279.899648] ===== TEST: multiple target modules ===== [ 279.979268] % modprobe test_klp_callbacks_busy block_transition=N [ 280.013088] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 280.014088] test_klp_callbacks_busy: busymod_work_func enter [ 280.015050] test_klp_callbacks_busy: busymod_work_func exit [ 280.103824] % modprobe test_klp_callbacks_demo [ 280.142066] livepatch: enabling patch 'test_klp_callbacks_demo' [ 280.142980] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 280.143710] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 280.153582] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 280.159037] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 280.159815] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 280.161144] livepatch: 'test_klp_callbacks_demo': patching complete [ 280.267448] % modprobe test_klp_callbacks_mod [ 280.301083] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 280.302319] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 280.303799] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 280.306139] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 280.337654] % rmmod test_klp_callbacks_mod [ 280.362407] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 280.363500] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 280.364787] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 280.365994] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 280.388345] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 280.390319] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 280.391139] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 280.392438] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 280.419705] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 280.420619] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 280.422098] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 280.446072] % rmmod test_klp_callbacks_demo [ 280.520800] % rmmod test_klp_callbacks_busy [ 280.546465] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 280.719055] ===== TEST: busy target module ===== [ 280.798160] % modprobe test_klp_callbacks_busy block_transition=Y [ 280.834652] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 280.835669] test_klp_callbacks_busy: busymod_work_func enter [ 280.928570] % modprobe test_klp_callbacks_demo [ 280.964396] livepatch: enabling patch 'test_klp_callbacks_demo' [ 280.965618] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 280.966396] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 280.974869] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 281.085775] % modprobe test_klp_callbacks_mod [ 281.119712] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 281.121082] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 281.123718] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 281.152988] % rmmod test_klp_callbacks_mod [ 281.179088] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 281.180184] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 281.181446] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 281.210818] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 281.212545] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 281.811887] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 281.812770] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 281.814079] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 281.942152] % rmmod test_klp_callbacks_demo [ 282.011510] % rmmod test_klp_callbacks_busy [ 282.051921] test_klp_callbacks_busy: busymod_work_func exit [ 282.055922] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 282.219942] ===== TEST: multiple livepatches ===== [ 282.293973] % modprobe test_klp_callbacks_demo [ 282.328576] livepatch: enabling patch 'test_klp_callbacks_demo' [ 282.329539] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 282.330310] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 282.332617] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 282.333436] livepatch: 'test_klp_callbacks_demo': patching complete [ 282.441518] % modprobe test_klp_callbacks_demo2 [ 282.475620] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 282.476772] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 282.477603] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 282.479334] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 282.480233] livepatch: 'test_klp_callbacks_demo2': patching complete [ 282.514052] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 282.515506] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 282.516328] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 282.518013] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 282.518836] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 282.523201] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 282.524563] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 282.525368] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 282.526961] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 282.527772] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 282.548952] % rmmod test_klp_callbacks_demo2 [ 282.623884] % rmmod test_klp_callbacks_demo [ 282.815758] ===== TEST: atomic replace ===== [ 282.893871] % modprobe test_klp_callbacks_demo [ 282.929454] livepatch: enabling patch 'test_klp_callbacks_demo' [ 282.930347] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 282.931124] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 282.932816] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 282.933559] livepatch: 'test_klp_callbacks_demo': patching complete [ 283.044172] % modprobe test_klp_callbacks_demo2 replace=1 [ 283.080923] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 283.081817] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 283.082557] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 283.086688] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 283.087530] livepatch: 'test_klp_callbacks_demo2': patching complete [ 283.123069] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 283.124560] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 283.125506] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 283.128580] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 283.129812] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 283.153149] % rmmod test_klp_callbacks_demo2 [ 283.220085] % rmmod test_klp_callbacks_demo [ 287.017400] livepatch: kernel.ftrace_enabled = 1 [ 287.058877] ===== TEST: livepatch interaction with ftrace_enabled sysctl ===== [ 287.105693] livepatch: kernel.ftrace_enabled = 0 [ 287.106759] % modprobe test_klp_livepatch [ 287.181432] livepatch: enabling patch 'test_klp_livepatch' [ 287.182853] livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16) [ 287.184104] livepatch: failed to patch object 'vmlinux' [ 287.184864] livepatch: failed to enable patch 'test_klp_livepatch' [ 287.186115] livepatch: 'test_klp_livepatch': unpatching complete [ 287.221168] modprobe: ERROR: could not insert 'test_klp_livepatch': Device or resource busy [ 287.268482] livepatch: kernel.ftrace_enabled = 1 [ 287.343246] % modprobe test_klp_livepatch [ 287.408116] livepatch: enabling patch 'test_klp_livepatch' [ 287.414638] livepatch: 'test_klp_livepatch': starting patching transition [ 288.822494] livepatch: 'test_klp_livepatch': patching complete [ 288.903025] livepatch: sysctl: setting key "kernel.ftrace_enabled": Device or resource busy [ 288.923177] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 288.925028] livepatch: 'test_klp_livepatch': starting unpatching transition [ 289.806361] livepatch: 'test_klp_livepatch': unpatching complete [ 289.882577] % rmmod test_klp_livepatch [ 293.179833] livepatch: kernel.ftrace_enabled = 1 [ 293.223138] ===== TEST: basic function patching ===== [ 293.302935] % modprobe test_klp_livepatch [ 293.374429] livepatch: enabling patch 'test_klp_livepatch' [ 293.381277] livepatch: 'test_klp_livepatch': starting patching transition [ 294.774304] livepatch: 'test_klp_livepatch': patching complete [ 294.838789] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 294.840568] livepatch: 'test_klp_livepatch': starting unpatching transition [ 294.866191] livepatch: 'test_klp_livepatch': unpatching complete [ 294.888054] % rmmod test_klp_livepatch [ 295.090342] ===== TEST: multiple livepatches ===== [ 295.168341] % modprobe test_klp_livepatch [ 295.232154] livepatch: enabling patch 'test_klp_livepatch' [ 295.237891] livepatch: 'test_klp_livepatch': starting patching transition [ 296.822079] livepatch: 'test_klp_livepatch': patching complete [ 296.952771] test_klp_livepatch: this has been live patched [ 297.060233] % modprobe test_klp_atomic_replace replace=0 [ 297.124939] livepatch: enabling patch 'test_klp_atomic_replace' [ 297.130754] livepatch: 'test_klp_atomic_replace': starting patching transition [ 298.806126] livepatch: 'test_klp_atomic_replace': patching complete [ 298.852071] test_klp_livepatch: this has been live patched [ 298.874669] test_klp_atomic_replace: this has been live patched [ 298.879166] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 298.881006] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 299.957695] livepatch: 'test_klp_atomic_replace': unpatching complete [ 300.078179] % rmmod test_klp_atomic_replace [ 300.150817] test_klp_livepatch: this has been live patched [ 300.179559] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 300.181370] livepatch: 'test_klp_livepatch': starting unpatching transition [ 300.206235] livepatch: 'test_klp_livepatch': unpatching complete [ 300.226884] % rmmod test_klp_livepatch [ 300.445124] ===== TEST: atomic replace livepatch ===== [ 300.522113] % modprobe test_klp_livepatch [ 300.585475] livepatch: enabling patch 'test_klp_livepatch' [ 300.591090] livepatch: 'test_klp_livepatch': starting patching transition [ 300.592722] livepatch: 'test_klp_livepatch': patching complete [ 300.645875] test_klp_livepatch: this has been live patched [ 300.747402] % modprobe test_klp_atomic_replace replace=1 [ 300.844037] livepatch: enabling patch 'test_klp_atomic_replace' [ 300.849913] livepatch: 'test_klp_atomic_replace': starting patching transition [ 300.873911] livepatch: 'test_klp_atomic_replace': patching complete [ 300.953122] test_klp_atomic_replace: this has been live patched [ 300.978297] % rmmod test_klp_livepatch [ 301.073863] test_klp_atomic_replace: this has been live patched [ 301.079491] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 301.081117] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 301.106840] livepatch: 'test_klp_atomic_replace': unpatching complete [ 301.130658] % rmmod test_klp_atomic_replace [ 304.642695] livepatch: kernel.ftrace_enabled = 1 [ 304.687696] ===== TEST: basic shadow variable API ===== [ 304.770422] % modprobe test_klp_shadow_vars [ 304.806906] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 304.807956] test_klp_shadow_vars: got expected NULL result [ 304.808925] test_klp_shadow_vars: shadow_ctor: PTR3 -> PTR2 [ 304.809874] 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 [ 304.811619] test_klp_shadow_vars: shadow_ctor: PTR6 -> PTR5 [ 304.812413] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR1, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR5 = PTR6 [ 304.814056] test_klp_shadow_vars: shadow_ctor: PTR8 -> PTR7 [ 304.814818] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR7 = PTR8 [ 304.816485] test_klp_shadow_vars: shadow_ctor: PTR11 -> PTR10 [ 304.817304] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR10 = PTR11 [ 304.819007] test_klp_shadow_vars: shadow_ctor: PTR13 -> PTR12 [ 304.819797] 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 [ 304.821698] test_klp_shadow_vars: shadow_ctor: PTR16 -> PTR15 [ 304.822504] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR14, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR15 = PTR16 [ 304.823987] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR3 [ 304.824957] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 304.825805] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 304.826737] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 304.827635] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR8 [ 304.828595] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 304.829495] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 304.830497] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 304.831416] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR13 [ 304.832362] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 304.833179] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 304.834146] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 304.835059] 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 [ 304.836815] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 304.837715] 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 [ 304.839439] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 304.840337] 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 [ 304.842105] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 304.843023] test_klp_shadow_vars: shadow_dtor(obj=PTR1, shadow_data=PTR3) [ 304.844559] test_klp_shadow_vars: klp_shadow_free(obj=PTR1, id=0x1234, dtor=PTR17) [ 304.845620] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 304.846599] test_klp_shadow_vars: got expected NULL result [ 304.847320] test_klp_shadow_vars: shadow_dtor(obj=PTR9, shadow_data=PTR8) [ 304.848200] test_klp_shadow_vars: klp_shadow_free(obj=PTR9, id=0x1234, dtor=PTR17) [ 304.849246] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR0 [ 304.850236] test_klp_shadow_vars: got expected NULL result [ 304.851046] test_klp_shadow_vars: shadow_dtor(obj=PTR14, shadow_data=PTR13) [ 304.851910] test_klp_shadow_vars: klp_shadow_free(obj=PTR14, id=0x1234, dtor=PTR17) [ 304.852862] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR0 [ 304.853774] test_klp_shadow_vars: got expected NULL result [ 304.854581] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 304.855575] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 304.856483] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 304.857488] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 304.858411] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 304.859417] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 304.860384] test_klp_shadow_vars: klp_shadow_free_all(id=0x1235, dtor=PTR0) [ 304.861358] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR0 [ 304.862349] test_klp_shadow_vars: got expected NULL result [ 304.863154] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR0 [ 304.864174] test_klp_shadow_vars: got expected NULL result [ 304.864951] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR0 [ 304.865924] test_klp_shadow_vars: got expected NULL result [ 304.899386] % rmmod test_klp_shadow_vars [ 308.408324] livepatch: kernel.ftrace_enabled = 1 [ 308.451142] ===== TEST: system state modification ===== [ 308.529284] % modprobe test_klp_state [ 308.564786] livepatch: enabling patch 'test_klp_state' [ 308.565563] test_klp_state: pre_patch_callback: vmlinux [ 308.566261] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 308.567348] livepatch: 'test_klp_state': starting patching transition [ 308.568838] test_klp_state: post_patch_callback: vmlinux [ 308.569499] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 308.570364] livepatch: 'test_klp_state': patching complete [ 308.605646] % echo 0 > /sys/kernel/livepatch/test_klp_state/enabled [ 308.607637] livepatch: 'test_klp_state': initializing unpatching transition [ 308.608956] test_klp_state: pre_unpatch_callback: vmlinux [ 308.609617] test_klp_state: restore_console_loglevel: restoring console_loglevel [ 308.610556] livepatch: 'test_klp_state': starting unpatching transition [ 308.613054] test_klp_state: post_unpatch_callback: vmlinux [ 308.613793] test_klp_state: free_loglevel_state: freeing space for the stored console_loglevel [ 308.614874] livepatch: 'test_klp_state': unpatching complete [ 308.636077] % rmmod test_klp_state [ 308.823619] ===== TEST: taking over system state modification ===== [ 308.898847] % modprobe test_klp_state [ 308.934593] livepatch: enabling patch 'test_klp_state' [ 308.935540] test_klp_state: pre_patch_callback: vmlinux [ 308.936946] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 308.938306] livepatch: 'test_klp_state': starting patching transition [ 309.812982] test_klp_state: post_patch_callback: vmlinux [ 309.813784] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 309.814732] livepatch: 'test_klp_state': patching complete [ 310.017345] % modprobe test_klp_state2 [ 310.051390] livepatch: enabling patch 'test_klp_state2' [ 310.052425] livepatch: 'test_klp_state2': initializing patching transition [ 310.053449] test_klp_state2: pre_patch_callback: vmlinux [ 310.054132] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 310.055276] livepatch: 'test_klp_state2': starting patching transition [ 310.056670] livepatch: 'test_klp_state2': completing patching transition [ 310.057607] test_klp_state2: post_patch_callback: vmlinux [ 310.058271] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 310.059288] livepatch: 'test_klp_state2': patching complete [ 310.116117] % rmmod test_klp_state [ 310.165063] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 310.166450] livepatch: 'test_klp_state2': initializing unpatching transition [ 310.167461] test_klp_state2: pre_unpatch_callback: vmlinux [ 310.168263] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 310.169252] livepatch: 'test_klp_state2': starting unpatching transition [ 310.170918] test_klp_state2: post_unpatch_callback: vmlinux [ 310.171748] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 310.172990] livepatch: 'test_klp_state2': unpatching complete [ 310.195126] % rmmod test_klp_state2 [ 310.367248] ===== TEST: compatible cumulative livepatches ===== [ 310.444262] % modprobe test_klp_state2 [ 310.479936] livepatch: enabling patch 'test_klp_state2' [ 310.480761] test_klp_state2: pre_patch_callback: vmlinux [ 310.481425] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 310.482510] livepatch: 'test_klp_state2': starting patching transition [ 310.484123] test_klp_state2: post_patch_callback: vmlinux [ 310.484829] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 310.485682] livepatch: 'test_klp_state2': patching complete [ 310.593386] % modprobe test_klp_state3 [ 310.628021] livepatch: enabling patch 'test_klp_state3' [ 310.628821] livepatch: 'test_klp_state3': initializing patching transition [ 310.629754] test_klp_state3: pre_patch_callback: vmlinux [ 310.630401] test_klp_state3: allocate_loglevel_state: space to store console_loglevel already allocated [ 310.631559] livepatch: 'test_klp_state3': starting patching transition [ 310.632930] livepatch: 'test_klp_state3': completing patching transition [ 310.633863] test_klp_state3: post_patch_callback: vmlinux [ 310.634556] test_klp_state3: fix_console_loglevel: taking over the console_loglevel change [ 310.635574] livepatch: 'test_klp_state3': patching complete [ 310.686882] % rmmod test_klp_state2 [ 310.808112] % modprobe test_klp_state2 [ 310.841251] livepatch: enabling patch 'test_klp_state2' [ 310.841969] livepatch: 'test_klp_state2': initializing patching transition [ 310.842921] test_klp_state2: pre_patch_callback: vmlinux [ 310.843587] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 310.844729] livepatch: 'test_klp_state2': starting patching transition [ 310.846083] livepatch: 'test_klp_state2': completing patching transition [ 310.847032] test_klp_state2: post_patch_callback: vmlinux [ 310.848015] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 310.849034] livepatch: 'test_klp_state2': patching complete [ 310.882992] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 310.884248] livepatch: 'test_klp_state2': initializing unpatching transition [ 310.885223] test_klp_state2: pre_unpatch_callback: vmlinux [ 310.885913] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 310.886845] livepatch: 'test_klp_state2': starting unpatching transition [ 311.797039] test_klp_state2: post_unpatch_callback: vmlinux [ 311.797909] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 311.799129] livepatch: 'test_klp_state2': unpatching complete [ 311.846466] % rmmod test_klp_state2 [ 311.916913] % rmmod test_klp_state3 [ 312.100814] ===== TEST: incompatible cumulative livepatches ===== [ 312.176473] % modprobe test_klp_state2 [ 312.211562] livepatch: enabling patch 'test_klp_state2' [ 312.212352] test_klp_state2: pre_patch_callback: vmlinux [ 312.213277] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 312.214353] livepatch: 'test_klp_state2': starting patching transition [ 312.215848] test_klp_state2: post_patch_callback: vmlinux [ 312.216561] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 312.217388] livepatch: 'test_klp_state2': patching complete [ 312.249829] % modprobe test_klp_state [ 312.284741] livepatch: Livepatch patch (test_klp_state) is not compatible with the already installed livepatches. [ 312.318210] modprobe: ERROR: could not insert 'test_klp_state': Invalid argument [ 312.319596] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 312.320861] livepatch: 'test_klp_state2': initializing unpatching transition [ 312.322123] test_klp_state2: pre_unpatch_callback: vmlinux [ 312.322979] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 312.323975] livepatch: 'test_klp_state2': starting unpatching transition [ 312.325595] test_klp_state2: post_unpatch_callback: vmlinux [ 312.326357] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 312.327537] livepatch: 'test_klp_state2': unpatching complete [ 312.347816] % rmmod test_klp_state2