test-sysfs.sh 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #!/bin/bash
  2. # SPDX-License-Identifier: GPL-2.0
  3. # Copyright (C) 2022 Song Liu <[email protected]>
  4. . $(dirname $0)/functions.sh
  5. MOD_LIVEPATCH=test_klp_livepatch
  6. setup_config
  7. # - load a livepatch and verifies the sysfs entries work as expected
  8. start_test "sysfs test"
  9. load_lp $MOD_LIVEPATCH
  10. check_sysfs_rights "$MOD_LIVEPATCH" "" "drwxr-xr-x"
  11. check_sysfs_rights "$MOD_LIVEPATCH" "enabled" "-rw-r--r--"
  12. check_sysfs_value "$MOD_LIVEPATCH" "enabled" "1"
  13. check_sysfs_rights "$MOD_LIVEPATCH" "force" "--w-------"
  14. check_sysfs_rights "$MOD_LIVEPATCH" "transition" "-r--r--r--"
  15. check_sysfs_value "$MOD_LIVEPATCH" "transition" "0"
  16. check_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--"
  17. check_sysfs_value "$MOD_LIVEPATCH" "vmlinux/patched" "1"
  18. disable_lp $MOD_LIVEPATCH
  19. unload_lp $MOD_LIVEPATCH
  20. check_result "% modprobe $MOD_LIVEPATCH
  21. livepatch: enabling patch '$MOD_LIVEPATCH'
  22. livepatch: '$MOD_LIVEPATCH': initializing patching transition
  23. livepatch: '$MOD_LIVEPATCH': starting patching transition
  24. livepatch: '$MOD_LIVEPATCH': completing patching transition
  25. livepatch: '$MOD_LIVEPATCH': patching complete
  26. % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
  27. livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
  28. livepatch: '$MOD_LIVEPATCH': starting unpatching transition
  29. livepatch: '$MOD_LIVEPATCH': completing unpatching transition
  30. livepatch: '$MOD_LIVEPATCH': unpatching complete
  31. % rmmod $MOD_LIVEPATCH"
  32. start_test "sysfs test object/patched"
  33. MOD_LIVEPATCH=test_klp_callbacks_demo
  34. MOD_TARGET=test_klp_callbacks_mod
  35. load_lp $MOD_LIVEPATCH
  36. # check the "patch" file changes as target module loads/unloads
  37. check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0"
  38. load_mod $MOD_TARGET
  39. check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "1"
  40. unload_mod $MOD_TARGET
  41. check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0"
  42. disable_lp $MOD_LIVEPATCH
  43. unload_lp $MOD_LIVEPATCH
  44. check_result "% modprobe test_klp_callbacks_demo
  45. livepatch: enabling patch 'test_klp_callbacks_demo'
  46. livepatch: 'test_klp_callbacks_demo': initializing patching transition
  47. test_klp_callbacks_demo: pre_patch_callback: vmlinux
  48. livepatch: 'test_klp_callbacks_demo': starting patching transition
  49. livepatch: 'test_klp_callbacks_demo': completing patching transition
  50. test_klp_callbacks_demo: post_patch_callback: vmlinux
  51. livepatch: 'test_klp_callbacks_demo': patching complete
  52. % modprobe test_klp_callbacks_mod
  53. livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'test_klp_callbacks_mod'
  54. test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init
  55. test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init
  56. test_klp_callbacks_mod: test_klp_callbacks_mod_init
  57. % rmmod test_klp_callbacks_mod
  58. test_klp_callbacks_mod: test_klp_callbacks_mod_exit
  59. test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away
  60. livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module 'test_klp_callbacks_mod'
  61. test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> [MODULE_STATE_GOING] Going away
  62. % echo 0 > /sys/kernel/livepatch/test_klp_callbacks_demo/enabled
  63. livepatch: 'test_klp_callbacks_demo': initializing unpatching transition
  64. test_klp_callbacks_demo: pre_unpatch_callback: vmlinux
  65. livepatch: 'test_klp_callbacks_demo': starting unpatching transition
  66. livepatch: 'test_klp_callbacks_demo': completing unpatching transition
  67. test_klp_callbacks_demo: post_unpatch_callback: vmlinux
  68. livepatch: 'test_klp_callbacks_demo': unpatching complete
  69. % rmmod test_klp_callbacks_demo"
  70. exit 0