1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3# Copyright (C) 2024 SUSE 4# Author: Michael Vetter <mvetter@suse.com> 5 6. $(dirname $0)/functions.sh 7 8grep -q kprobe_ftrace_ops /proc/kallsyms || skip "test-kprobe requires CONFIG_KPROBES_ON_FTRACE" 9 10MOD_LIVEPATCH=test_klp_livepatch 11MOD_KPROBE=test_klp_kprobe 12 13setup_config 14 15# Kprobe a function and verify that we can't livepatch that same function 16# when it uses a post_handler since only one IPMODIFY maybe be registered 17# to any given function at a time. 18 19start_test "livepatch interaction with kprobed function with post_handler" 20 21echo 1 > "$SYSFS_KPROBES_DIR/enabled" 22 23load_mod $MOD_KPROBE has_post_handler=true 24load_failing_mod $MOD_LIVEPATCH 25unload_mod $MOD_KPROBE 26 27check_result "% insmod test_modules/test_klp_kprobe.ko has_post_handler=true 28% insmod test_modules/$MOD_LIVEPATCH.ko 29livepatch: enabling patch '$MOD_LIVEPATCH' 30livepatch: '$MOD_LIVEPATCH': initializing patching transition 31livepatch: failed to register ftrace handler for function 'cmdline_proc_show' (-16) 32livepatch: failed to patch object 'vmlinux' 33livepatch: failed to enable patch '$MOD_LIVEPATCH' 34livepatch: '$MOD_LIVEPATCH': canceling patching transition, going to unpatch 35livepatch: '$MOD_LIVEPATCH': completing unpatching transition 36livepatch: '$MOD_LIVEPATCH': unpatching complete 37insmod: ERROR: could not insert module test_modules/$MOD_LIVEPATCH.ko: Device or resource busy 38% rmmod test_klp_kprobe" 39 40start_test "livepatch interaction with kprobed function without post_handler" 41 42load_mod $MOD_KPROBE has_post_handler=false 43load_lp $MOD_LIVEPATCH 44 45unload_mod $MOD_KPROBE 46disable_lp $MOD_LIVEPATCH 47unload_lp $MOD_LIVEPATCH 48 49check_result "% insmod test_modules/test_klp_kprobe.ko has_post_handler=false 50% insmod test_modules/$MOD_LIVEPATCH.ko 51livepatch: enabling patch '$MOD_LIVEPATCH' 52livepatch: '$MOD_LIVEPATCH': initializing patching transition 53livepatch: '$MOD_LIVEPATCH': starting patching transition 54livepatch: '$MOD_LIVEPATCH': completing patching transition 55livepatch: '$MOD_LIVEPATCH': patching complete 56% rmmod test_klp_kprobe 57% echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled 58livepatch: '$MOD_LIVEPATCH': initializing unpatching transition 59livepatch: '$MOD_LIVEPATCH': starting unpatching transition 60livepatch: '$MOD_LIVEPATCH': completing unpatching transition 61livepatch: '$MOD_LIVEPATCH': unpatching complete 62% rmmod $MOD_LIVEPATCH" 63 64exit 0 65