[ 222.490125] Running test [R:13322546 T:7 - Livepatch kselftests - Kernel: 5.14.0-254.1998_764791350.el9.x86_64+debug] [-- MARK -- Thu Feb 2 01:50:00 2023] [ 269.884474] livepatch: kernel.ftrace_enabled = 1 [ 269.928640] ===== TEST: target module before livepatch ===== [ 270.008735] % modprobe test_klp_callbacks_mod [ 270.055122] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 270.144239] % modprobe test_klp_callbacks_demo [ 270.176580] test_klp_callbacks_demo: tainting kernel with TAINT_LIVEPATCH [ 270.179738] livepatch: enabling patch 'test_klp_callbacks_demo' [ 270.181124] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 270.181890] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 270.183162] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 270.185895] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 270.186787] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 270.188132] livepatch: 'test_klp_callbacks_demo': patching complete [ 270.220478] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 270.223161] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 270.223982] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 270.225286] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 270.227671] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 270.228674] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 270.229977] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 270.251414] % rmmod test_klp_callbacks_demo [ 270.320135] % rmmod test_klp_callbacks_mod [ 270.344268] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 270.493273] ===== TEST: module_coming notifier ===== [ 270.566609] % modprobe test_klp_callbacks_demo [ 270.600174] livepatch: enabling patch 'test_klp_callbacks_demo' [ 270.601179] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 270.601966] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 270.603968] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 270.604908] livepatch: 'test_klp_callbacks_demo': patching complete [ 270.711089] % modprobe test_klp_callbacks_mod [ 270.749087] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 270.750740] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 270.752773] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 270.755752] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 270.766765] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 270.768574] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 270.769530] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 270.771051] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 272.363937] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 272.364879] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 272.366642] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 272.433254] % rmmod test_klp_callbacks_demo [ 272.507412] % rmmod test_klp_callbacks_mod [ 272.533843] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 272.695900] ===== TEST: module_going notifier ===== [ 272.769425] % modprobe test_klp_callbacks_mod [ 272.804010] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 272.897323] % modprobe test_klp_callbacks_demo [ 272.931089] livepatch: enabling patch 'test_klp_callbacks_demo' [ 272.932349] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 272.933252] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 272.934732] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 272.936473] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 272.937410] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_LIVE] Normal state [ 272.938935] livepatch: 'test_klp_callbacks_demo': patching complete [ 272.994299] % rmmod test_klp_callbacks_mod [ 273.019569] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 273.020788] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 273.022288] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 273.024229] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 273.050542] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 273.052277] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 273.053228] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 273.055079] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 273.056126] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 273.077519] % rmmod test_klp_callbacks_demo [ 273.256449] ===== TEST: module_coming and module_going notifiers ===== [ 273.333272] % modprobe test_klp_callbacks_demo [ 273.370298] livepatch: enabling patch 'test_klp_callbacks_demo' [ 273.371294] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 273.372176] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 273.374868] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 273.375927] livepatch: 'test_klp_callbacks_demo': patching complete [ 273.487061] % modprobe test_klp_callbacks_mod [ 273.519225] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 273.520836] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 273.522830] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 273.525616] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 273.559707] % rmmod test_klp_callbacks_mod [ 273.586692] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 273.587772] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 273.589077] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 273.590307] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 273.615056] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 273.616646] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 273.617566] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 273.619362] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 273.620288] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 273.642292] % rmmod test_klp_callbacks_demo [ 273.839471] ===== TEST: target module not present ===== [ 273.915070] % modprobe test_klp_callbacks_demo [ 273.949292] livepatch: enabling patch 'test_klp_callbacks_demo' [ 273.950405] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 273.951187] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 275.370231] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 275.371076] livepatch: 'test_klp_callbacks_demo': patching complete [ 275.403199] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 275.404635] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 275.405448] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 275.407259] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 275.408084] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 275.428199] % rmmod test_klp_callbacks_demo [ 275.606473] ===== TEST: pre-patch callback -ENODEV ===== [ 275.679815] % modprobe test_klp_callbacks_mod [ 275.713938] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 275.725217] % modprobe test_klp_callbacks_demo pre_patch_ret=-19 [ 275.759184] livepatch: enabling patch 'test_klp_callbacks_demo' [ 275.760065] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 275.760846] livepatch: pre-patch callback failed for object 'vmlinux' [ 275.761662] livepatch: failed to enable patch 'test_klp_callbacks_demo' [ 275.762576] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 275.791359] modprobe: ERROR: could not insert 'test_klp_callbacks_demo': No such device [ 275.813575] % rmmod test_klp_callbacks_mod [ 275.837471] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 275.993800] ===== TEST: module_coming + pre-patch callback -ENODEV ===== [ 276.071363] % modprobe test_klp_callbacks_demo [ 276.105637] livepatch: enabling patch 'test_klp_callbacks_demo' [ 276.106534] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 276.107340] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 276.108890] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 276.109691] livepatch: 'test_klp_callbacks_demo': patching complete [ 276.146015] % echo -19 > /sys/module/test_klp_callbacks_demo/parameters/pre_patch_ret [ 276.169914] % modprobe test_klp_callbacks_mod [ 276.213818] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 276.216662] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 276.219863] livepatch: pre-patch callback failed for object 'test_klp_callbacks_mod' [ 276.222020] livepatch: patch 'test_klp_callbacks_demo' failed for module 'test_klp_callbacks_mod', refusing to load module 'test_klp_callbacks_mod' [ 276.266179] modprobe: ERROR: could not insert 'test_klp_callbacks_mod': No such device [ 276.269078] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 276.272824] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 276.274874] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 276.276861] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 276.277708] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 276.300291] % rmmod test_klp_callbacks_demo [ 276.485973] ===== TEST: multiple target modules ===== [ 276.559693] % modprobe test_klp_callbacks_busy block_transition=N [ 276.593499] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 276.594701] test_klp_callbacks_busy: busymod_work_func enter [ 276.595637] test_klp_callbacks_busy: busymod_work_func exit [ 276.688273] % modprobe test_klp_callbacks_demo [ 276.723360] livepatch: enabling patch 'test_klp_callbacks_demo' [ 276.724252] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 276.725030] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 276.732834] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 278.377796] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 278.378643] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 278.380041] livepatch: 'test_klp_callbacks_demo': patching complete [ 278.527029] % modprobe test_klp_callbacks_mod [ 278.560255] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 278.561488] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 278.562995] test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 278.565382] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 278.596885] % rmmod test_klp_callbacks_mod [ 278.622650] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 278.623828] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 278.625183] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 278.626418] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 278.654055] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 278.655637] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 278.656452] test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 278.657931] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 278.684342] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 278.685311] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 278.686712] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 278.707140] % rmmod test_klp_callbacks_demo [ 278.787476] % rmmod test_klp_callbacks_busy [ 278.819303] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 278.991880] ===== TEST: busy target module ===== [ 279.075722] % modprobe test_klp_callbacks_busy block_transition=Y [ 279.111563] test_klp_callbacks_busy: test_klp_callbacks_busy_init [ 279.112644] test_klp_callbacks_busy: busymod_work_func enter [ 279.204737] % modprobe test_klp_callbacks_demo [ 279.240584] livepatch: enabling patch 'test_klp_callbacks_demo' [ 279.241618] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 279.242497] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 279.249865] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 279.367648] % modprobe test_klp_callbacks_mod [ 279.402693] livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod' [ 279.404096] test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init [ 279.406953] test_klp_callbacks_mod: test_klp_callbacks_mod_init [ 279.441331] % rmmod test_klp_callbacks_mod [ 279.466171] test_klp_callbacks_mod: test_klp_callbacks_mod_exit [ 279.467710] livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod' [ 279.469155] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away [ 279.494363] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 279.496049] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 280.387183] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 280.388163] test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_busy -> [MODULE_STATE_LIVE] Normal state [ 280.389540] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 280.459641] % rmmod test_klp_callbacks_demo [ 280.529708] % rmmod test_klp_callbacks_busy [ 280.568401] test_klp_callbacks_busy: busymod_work_func exit [ 280.569174] test_klp_callbacks_busy: test_klp_callbacks_busy_exit [ 280.741052] ===== TEST: multiple livepatches ===== [ 280.817018] % modprobe test_klp_callbacks_demo [ 280.853654] livepatch: enabling patch 'test_klp_callbacks_demo' [ 280.854648] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 280.855461] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 282.345588] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 282.347031] livepatch: 'test_klp_callbacks_demo': patching complete [ 282.525418] % modprobe test_klp_callbacks_demo2 [ 282.560874] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 282.562008] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 282.562796] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 284.329253] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 284.330837] livepatch: 'test_klp_callbacks_demo2': patching complete [ 284.403192] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 284.404644] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 284.405464] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 284.407263] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 284.408106] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 284.409784] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled [ 284.411187] test_klp_callbacks_demo: pre_unpatch_callback: vmlinux [ 284.411989] livepatch: 'test_klp_callbacks_demo': starting unpatching transition [ 284.413462] test_klp_callbacks_demo: post_unpatch_callback: vmlinux [ 284.414271] livepatch: 'test_klp_callbacks_demo': unpatching complete [ 284.435534] % rmmod test_klp_callbacks_demo2 [ 284.503731] % rmmod test_klp_callbacks_demo [ 284.691296] ===== TEST: atomic replace ===== [ 284.765653] % modprobe test_klp_callbacks_demo [ 284.801621] livepatch: enabling patch 'test_klp_callbacks_demo' [ 284.802727] test_klp_callbacks_demo: pre_patch_callback: vmlinux [ 284.803508] livepatch: 'test_klp_callbacks_demo': starting patching transition [ 286.377104] test_klp_callbacks_demo: post_patch_callback: vmlinux [ 286.377953] livepatch: 'test_klp_callbacks_demo': patching complete [ 286.576011] % modprobe test_klp_callbacks_demo2 replace=1 [ 286.612773] livepatch: enabling patch 'test_klp_callbacks_demo2' [ 286.613674] test_klp_callbacks_demo2: pre_patch_callback: vmlinux [ 286.614598] livepatch: 'test_klp_callbacks_demo2': starting patching transition [ 288.361238] test_klp_callbacks_demo2: post_patch_callback: vmlinux [ 288.362116] livepatch: 'test_klp_callbacks_demo2': patching complete [ 288.447431] % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo2/enabled [ 288.449088] test_klp_callbacks_demo2: pre_unpatch_callback: vmlinux [ 288.450034] livepatch: 'test_klp_callbacks_demo2': starting unpatching transition [ 288.451803] test_klp_callbacks_demo2: post_unpatch_callback: vmlinux [ 288.452744] livepatch: 'test_klp_callbacks_demo2': unpatching complete [ 288.474247] % rmmod test_klp_callbacks_demo2 [ 288.549399] % rmmod test_klp_callbacks_demo [ 292.142094] livepatch: kernel.ftrace_enabled = 1 [ 292.201206] ===== TEST: livepatch interaction with ftrace_enabled sysctl ===== [ 292.251403] livepatch: kernel.ftrace_enabled = 0 [ 292.252704] % modprobe test_klp_livepatch [ 292.320507] livepatch: enabling patch 'test_klp_livepatch' [ 292.321922] livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16) [ 292.323235] livepatch: failed to patch object 'vmlinux' [ 292.323930] livepatch: failed to enable patch 'test_klp_livepatch' [ 292.325124] livepatch: 'test_klp_livepatch': unpatching complete [ 292.356009] modprobe: ERROR: could not insert 'test_klp_livepatch': Device or resource busy [ 292.405601] livepatch: kernel.ftrace_enabled = 1 [ 292.484699] % modprobe test_klp_livepatch [ 292.550505] livepatch: enabling patch 'test_klp_livepatch' [ 292.556609] livepatch: 'test_klp_livepatch': starting patching transition [ 293.352714] livepatch: 'test_klp_livepatch': patching complete [ 293.488157] livepatch: sysctl: setting key "kernel.ftrace_enabled": Device or resource busy [ 293.508971] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 293.510684] livepatch: 'test_klp_livepatch': starting unpatching transition [ 293.536746] livepatch: 'test_klp_livepatch': unpatching complete [ 293.559229] % rmmod test_klp_livepatch [ 296.776271] livepatch: kernel.ftrace_enabled = 1 [ 296.819168] ===== TEST: basic function patching ===== [ 296.895131] % modprobe test_klp_livepatch [ 296.962907] livepatch: enabling patch 'test_klp_livepatch' [ 296.969279] livepatch: 'test_klp_livepatch': starting patching transition [ 298.344350] livepatch: 'test_klp_livepatch': patching complete [ 298.405416] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 298.406976] livepatch: 'test_klp_livepatch': starting unpatching transition [ 298.436973] livepatch: 'test_klp_livepatch': unpatching complete [ 298.458572] % rmmod test_klp_livepatch [ 298.655934] ===== TEST: multiple livepatches ===== [ 298.728557] % modprobe test_klp_livepatch [ 298.798690] livepatch: enabling patch 'test_klp_livepatch' [ 298.807970] livepatch: 'test_klp_livepatch': starting patching transition [ 300.328151] livepatch: 'test_klp_livepatch': patching complete [ 300.412138] test_klp_livepatch: this has been live patched [ 300.517954] % modprobe test_klp_atomic_replace replace=0 [ 300.584029] livepatch: enabling patch 'test_klp_atomic_replace' [ 300.589653] livepatch: 'test_klp_atomic_replace': starting patching transition [ 302.312006] livepatch: 'test_klp_atomic_replace': patching complete [ 302.443491] test_klp_livepatch: this has been live patched [ 302.465982] test_klp_atomic_replace: this has been live patched [ 302.470866] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 302.472444] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 302.498051] livepatch: 'test_klp_atomic_replace': unpatching complete [ 302.519718] % rmmod test_klp_atomic_replace [ 302.580595] test_klp_livepatch: this has been live patched [ 302.609037] % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled [ 302.610765] livepatch: 'test_klp_livepatch': starting unpatching transition [ 304.384249] livepatch: 'test_klp_livepatch': unpatching complete [ 304.516206] % rmmod test_klp_livepatch [ 304.739924] ===== TEST: atomic replace livepatch ===== [ 304.817158] % modprobe test_klp_livepatch [ 304.882321] livepatch: enabling patch 'test_klp_livepatch' [ 304.888251] livepatch: 'test_klp_livepatch': starting patching transition [ 304.889976] livepatch: 'test_klp_livepatch': patching complete [ 304.944739] test_klp_livepatch: this has been live patched [ 305.044520] % modprobe test_klp_atomic_replace replace=1 [ 305.139264] livepatch: enabling patch 'test_klp_atomic_replace' [ 305.144860] livepatch: 'test_klp_atomic_replace': starting patching transition [ 305.168931] livepatch: 'test_klp_atomic_replace': patching complete [ 305.245878] test_klp_atomic_replace: this has been live patched [ 305.270498] % rmmod test_klp_livepatch [ 305.360620] test_klp_atomic_replace: this has been live patched [ 305.365634] % echo 0 > /sys/kernel/livepatch/test_klp_atomic_replace/enabled [ 305.367263] livepatch: 'test_klp_atomic_replace': starting unpatching transition [ 305.391832] livepatch: 'test_klp_atomic_replace': unpatching complete [ 305.412813] % rmmod test_klp_atomic_replace [ 308.743827] livepatch: kernel.ftrace_enabled = 1 [ 308.797178] ===== TEST: basic shadow variable API ===== [ 308.889903] % modprobe test_klp_shadow_vars [ 308.930252] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 308.931297] test_klp_shadow_vars: got expected NULL result [ 308.932776] test_klp_shadow_vars: shadow_ctor: PTR3 -> PTR2 [ 308.933727] 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 [ 308.936013] test_klp_shadow_vars: shadow_ctor: PTR6 -> PTR5 [ 308.936840] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR1, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR5 = PTR6 [ 308.938551] test_klp_shadow_vars: shadow_ctor: PTR8 -> PTR7 [ 308.939357] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1234, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR7 = PTR8 [ 308.941034] test_klp_shadow_vars: shadow_ctor: PTR11 -> PTR10 [ 308.941860] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR9, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR10 = PTR11 [ 308.943543] test_klp_shadow_vars: shadow_ctor: PTR13 -> PTR12 [ 308.944374] 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 [ 308.946153] test_klp_shadow_vars: shadow_ctor: PTR16 -> PTR15 [ 308.946943] test_klp_shadow_vars: klp_shadow_alloc(obj=PTR14, id=0x1235, size=8, gfp_flags=GFP_KERNEL), ctor=PTR4, ctor_data=PTR15 = PTR16 [ 308.948625] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR3 [ 308.949620] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 308.950522] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 308.951505] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 308.952408] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR8 [ 308.953407] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 308.954308] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 308.955312] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 308.956234] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR13 [ 308.957256] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 308.958178] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 308.959211] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 308.960130] 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 [ 308.961900] test_klp_shadow_vars: got expected PTR3 -> PTR2 result [ 308.962813] 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 [ 308.964544] test_klp_shadow_vars: got expected PTR8 -> PTR7 result [ 308.965460] 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 [ 308.967128] test_klp_shadow_vars: got expected PTR13 -> PTR12 result [ 308.968014] test_klp_shadow_vars: shadow_dtor(obj=PTR1, shadow_data=PTR3) [ 308.969476] test_klp_shadow_vars: klp_shadow_free(obj=PTR1, id=0x1234, dtor=PTR17) [ 308.970550] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1234) = PTR0 [ 308.971553] test_klp_shadow_vars: got expected NULL result [ 308.972372] test_klp_shadow_vars: shadow_dtor(obj=PTR9, shadow_data=PTR8) [ 308.973343] test_klp_shadow_vars: klp_shadow_free(obj=PTR9, id=0x1234, dtor=PTR17) [ 308.974404] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1234) = PTR0 [ 308.975419] test_klp_shadow_vars: got expected NULL result [ 308.976230] test_klp_shadow_vars: shadow_dtor(obj=PTR14, shadow_data=PTR13) [ 308.977218] test_klp_shadow_vars: klp_shadow_free(obj=PTR14, id=0x1234, dtor=PTR17) [ 308.978278] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1234) = PTR0 [ 308.979285] test_klp_shadow_vars: got expected NULL result [ 308.980103] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR6 [ 308.981102] test_klp_shadow_vars: got expected PTR6 -> PTR5 result [ 308.981969] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR11 [ 308.982971] test_klp_shadow_vars: got expected PTR11 -> PTR10 result [ 308.983905] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR16 [ 308.984921] test_klp_shadow_vars: got expected PTR16 -> PTR15 result [ 308.985884] test_klp_shadow_vars: klp_shadow_free_all(id=0x1235, dtor=PTR0) [ 308.986866] test_klp_shadow_vars: klp_shadow_get(obj=PTR1, id=0x1235) = PTR0 [ 308.987862] test_klp_shadow_vars: got expected NULL result [ 308.988704] test_klp_shadow_vars: klp_shadow_get(obj=PTR9, id=0x1235) = PTR0 [ 308.989703] test_klp_shadow_vars: got expected NULL result [ 308.990512] test_klp_shadow_vars: klp_shadow_get(obj=PTR14, id=0x1235) = PTR0 [ 308.991517] test_klp_shadow_vars: got expected NULL result [ 309.049938] % rmmod test_klp_shadow_vars [ 312.228713] livepatch: kernel.ftrace_enabled = 1 [ 312.271413] ===== TEST: system state modification ===== [ 312.345336] % modprobe test_klp_state [ 312.381054] livepatch: enabling patch 'test_klp_state' [ 312.381885] test_klp_state: pre_patch_callback: vmlinux [ 312.382938] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 312.384059] livepatch: 'test_klp_state': starting patching transition [ 312.385534] test_klp_state: post_patch_callback: vmlinux [ 312.386244] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 312.387106] livepatch: 'test_klp_state': patching complete [ 312.425494] % echo 0 > /sys/kernel/livepatch/test_klp_state/enabled [ 312.427685] livepatch: 'test_klp_state': initializing unpatching transition [ 312.428664] test_klp_state: pre_unpatch_callback: vmlinux [ 312.429372] test_klp_state: restore_console_loglevel: restoring console_loglevel [ 312.430367] livepatch: 'test_klp_state': starting unpatching transition [ 312.431962] test_klp_state: post_unpatch_callback: vmlinux [ 312.432643] test_klp_state: free_loglevel_state: freeing space for the stored console_loglevel [ 312.434180] livepatch: 'test_klp_state': unpatching complete [ 312.454297] % rmmod test_klp_state [ 312.629808] ===== TEST: taking over system state modification ===== [ 312.702200] % modprobe test_klp_state [ 312.734748] livepatch: enabling patch 'test_klp_state' [ 312.735541] test_klp_state: pre_patch_callback: vmlinux [ 312.736523] test_klp_state: allocate_loglevel_state: allocating space to store console_loglevel [ 312.737615] livepatch: 'test_klp_state': starting patching transition [ 312.739046] test_klp_state: post_patch_callback: vmlinux [ 312.739703] test_klp_state: fix_console_loglevel: fixing console_loglevel [ 312.740565] livepatch: 'test_klp_state': patching complete [ 312.847052] % modprobe test_klp_state2 [ 312.880081] livepatch: enabling patch 'test_klp_state2' [ 312.880984] livepatch: 'test_klp_state2': initializing patching transition [ 312.881929] test_klp_state2: pre_patch_callback: vmlinux [ 312.882594] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 312.883747] livepatch: 'test_klp_state2': starting patching transition [ 312.885112] livepatch: 'test_klp_state2': completing patching transition [ 312.887143] test_klp_state2: post_patch_callback: vmlinux [ 312.887866] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 312.888890] livepatch: 'test_klp_state2': patching complete [ 312.937591] % rmmod test_klp_state [ 312.989158] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 312.991093] livepatch: 'test_klp_state2': initializing unpatching transition [ 312.992084] test_klp_state2: pre_unpatch_callback: vmlinux [ 312.992808] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 312.993716] livepatch: 'test_klp_state2': starting unpatching transition [ 314.343041] test_klp_state2: post_unpatch_callback: vmlinux [ 314.343934] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 314.345109] livepatch: 'test_klp_state2': unpatching complete [ 314.423931] % rmmod test_klp_state2 [ 314.607099] ===== TEST: compatible cumulative livepatches ===== [ 314.685997] % modprobe test_klp_state2 [ 314.718987] livepatch: enabling patch 'test_klp_state2' [ 314.719989] test_klp_state2: pre_patch_callback: vmlinux [ 314.720695] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 314.721908] livepatch: 'test_klp_state2': starting patching transition [ 314.723474] test_klp_state2: post_patch_callback: vmlinux [ 314.724221] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 314.725107] livepatch: 'test_klp_state2': patching complete [ 314.833328] % modprobe test_klp_state3 [ 314.868433] livepatch: enabling patch 'test_klp_state3' [ 314.869164] livepatch: 'test_klp_state3': initializing patching transition [ 314.870110] test_klp_state3: pre_patch_callback: vmlinux [ 314.870800] test_klp_state3: allocate_loglevel_state: space to store console_loglevel already allocated [ 314.872111] livepatch: 'test_klp_state3': starting patching transition [ 316.326754] livepatch: 'test_klp_state3': completing patching transition [ 316.327814] test_klp_state3: post_patch_callback: vmlinux [ 316.328529] test_klp_state3: fix_console_loglevel: taking over the console_loglevel change [ 316.329713] livepatch: 'test_klp_state3': patching complete [ 316.442286] % rmmod test_klp_state2 [ 316.565036] % modprobe test_klp_state2 [ 316.600785] livepatch: enabling patch 'test_klp_state2' [ 316.601609] livepatch: 'test_klp_state2': initializing patching transition [ 316.602557] test_klp_state2: pre_patch_callback: vmlinux [ 316.603208] test_klp_state2: allocate_loglevel_state: space to store console_loglevel already allocated [ 316.604353] livepatch: 'test_klp_state2': starting patching transition [ 316.605709] livepatch: 'test_klp_state2': completing patching transition [ 316.609149] test_klp_state2: post_patch_callback: vmlinux [ 316.609889] test_klp_state2: fix_console_loglevel: taking over the console_loglevel change [ 316.610922] livepatch: 'test_klp_state2': patching complete [ 316.641161] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 316.642459] livepatch: 'test_klp_state2': initializing unpatching transition [ 316.643436] test_klp_state2: pre_unpatch_callback: vmlinux [ 316.644145] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 316.645071] livepatch: 'test_klp_state2': starting unpatching transition [ 316.646553] test_klp_state2: post_unpatch_callback: vmlinux [ 316.647241] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 316.648531] livepatch: 'test_klp_state2': unpatching complete [ 316.668612] % rmmod test_klp_state2 [ 316.744170] % rmmod test_klp_state3 [ 316.926020] ===== TEST: incompatible cumulative livepatches ===== [ 317.004032] % modprobe test_klp_state2 [ 317.038953] livepatch: enabling patch 'test_klp_state2' [ 317.039782] test_klp_state2: pre_patch_callback: vmlinux [ 317.041058] test_klp_state2: allocate_loglevel_state: allocating space to store console_loglevel [ 317.042187] livepatch: 'test_klp_state2': starting patching transition [ 317.043667] test_klp_state2: post_patch_callback: vmlinux [ 317.044339] test_klp_state2: fix_console_loglevel: fixing console_loglevel [ 317.045215] livepatch: 'test_klp_state2': patching complete [ 317.075757] % modprobe test_klp_state [ 317.108540] livepatch: Livepatch patch (test_klp_state) is not compatible with the already installed livepatches. [ 317.141227] modprobe: ERROR: could not insert 'test_klp_state': Invalid argument [ 317.142582] % echo 0 > /sys/kernel/livepatch/test_klp_state2/enabled [ 317.143845] livepatch: 'test_klp_state2': initializing unpatching transition [ 317.145088] test_klp_state2: pre_unpatch_callback: vmlinux [ 317.145809] test_klp_state2: restore_console_loglevel: restoring console_loglevel [ 317.146748] livepatch: 'test_klp_state2': starting unpatching transition [ 318.374784] test_klp_state2: post_unpatch_callback: vmlinux [ 318.375602] test_klp_state2: free_loglevel_state: freeing space for the stored console_loglevel [ 318.376713] livepatch: 'test_klp_state2': unpatching complete [ 318.461001] % rmmod test_klp_state2