test-kprobe.sh 2.3 KB

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