Revert "tty: hvc: Fix data abort due to race in hvc_open"
[linux/fpc-iii.git] / tools / testing / selftests / livepatch / test-livepatch.sh
blob493e3df415a1f94ffa7c1e2d2890cb576536988b
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (C) 2018 Joe Lawrence <joe.lawrence@redhat.com>
5 . $(dirname $0)/functions.sh
7 MOD_LIVEPATCH=test_klp_livepatch
8 MOD_REPLACE=test_klp_atomic_replace
10 setup_config
13 # TEST: basic function patching
14 # - load a livepatch that modifies the output from /proc/cmdline and
15 # verify correct behavior
16 # - unload the livepatch and make sure the patch was removed
18 echo -n "TEST: basic function patching ... "
19 dmesg -C
21 load_lp $MOD_LIVEPATCH
23 if [[ "$(cat /proc/cmdline)" != "$MOD_LIVEPATCH: this has been live patched" ]] ; then
24 echo -e "FAIL\n\n"
25 die "livepatch kselftest(s) failed"
28 disable_lp $MOD_LIVEPATCH
29 unload_lp $MOD_LIVEPATCH
31 if [[ "$(cat /proc/cmdline)" == "$MOD_LIVEPATCH: this has been live patched" ]] ; then
32 echo -e "FAIL\n\n"
33 die "livepatch kselftest(s) failed"
36 check_result "% modprobe $MOD_LIVEPATCH
37 livepatch: enabling patch '$MOD_LIVEPATCH'
38 livepatch: '$MOD_LIVEPATCH': initializing patching transition
39 livepatch: '$MOD_LIVEPATCH': starting patching transition
40 livepatch: '$MOD_LIVEPATCH': completing patching transition
41 livepatch: '$MOD_LIVEPATCH': patching complete
42 % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
43 livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
44 livepatch: '$MOD_LIVEPATCH': starting unpatching transition
45 livepatch: '$MOD_LIVEPATCH': completing unpatching transition
46 livepatch: '$MOD_LIVEPATCH': unpatching complete
47 % rmmod $MOD_LIVEPATCH"
50 # TEST: multiple livepatches
51 # - load a livepatch that modifies the output from /proc/cmdline and
52 # verify correct behavior
53 # - load another livepatch and verify that both livepatches are active
54 # - unload the second livepatch and verify that the first is still active
55 # - unload the first livepatch and verify none are active
57 echo -n "TEST: multiple livepatches ... "
58 dmesg -C
60 load_lp $MOD_LIVEPATCH
62 grep 'live patched' /proc/cmdline > /dev/kmsg
63 grep 'live patched' /proc/meminfo > /dev/kmsg
65 load_lp $MOD_REPLACE replace=0
67 grep 'live patched' /proc/cmdline > /dev/kmsg
68 grep 'live patched' /proc/meminfo > /dev/kmsg
70 disable_lp $MOD_REPLACE
71 unload_lp $MOD_REPLACE
73 grep 'live patched' /proc/cmdline > /dev/kmsg
74 grep 'live patched' /proc/meminfo > /dev/kmsg
76 disable_lp $MOD_LIVEPATCH
77 unload_lp $MOD_LIVEPATCH
79 grep 'live patched' /proc/cmdline > /dev/kmsg
80 grep 'live patched' /proc/meminfo > /dev/kmsg
82 check_result "% modprobe $MOD_LIVEPATCH
83 livepatch: enabling patch '$MOD_LIVEPATCH'
84 livepatch: '$MOD_LIVEPATCH': initializing patching transition
85 livepatch: '$MOD_LIVEPATCH': starting patching transition
86 livepatch: '$MOD_LIVEPATCH': completing patching transition
87 livepatch: '$MOD_LIVEPATCH': patching complete
88 $MOD_LIVEPATCH: this has been live patched
89 % modprobe $MOD_REPLACE replace=0
90 livepatch: enabling patch '$MOD_REPLACE'
91 livepatch: '$MOD_REPLACE': initializing patching transition
92 livepatch: '$MOD_REPLACE': starting patching transition
93 livepatch: '$MOD_REPLACE': completing patching transition
94 livepatch: '$MOD_REPLACE': patching complete
95 $MOD_LIVEPATCH: this has been live patched
96 $MOD_REPLACE: this has been live patched
97 % echo 0 > /sys/kernel/livepatch/$MOD_REPLACE/enabled
98 livepatch: '$MOD_REPLACE': initializing unpatching transition
99 livepatch: '$MOD_REPLACE': starting unpatching transition
100 livepatch: '$MOD_REPLACE': completing unpatching transition
101 livepatch: '$MOD_REPLACE': unpatching complete
102 % rmmod $MOD_REPLACE
103 $MOD_LIVEPATCH: this has been live patched
104 % echo 0 > /sys/kernel/livepatch/$MOD_LIVEPATCH/enabled
105 livepatch: '$MOD_LIVEPATCH': initializing unpatching transition
106 livepatch: '$MOD_LIVEPATCH': starting unpatching transition
107 livepatch: '$MOD_LIVEPATCH': completing unpatching transition
108 livepatch: '$MOD_LIVEPATCH': unpatching complete
109 % rmmod $MOD_LIVEPATCH"
112 # TEST: atomic replace livepatch
113 # - load a livepatch that modifies the output from /proc/cmdline and
114 # verify correct behavior
115 # - load an atomic replace livepatch and verify that only the second is active
116 # - remove the first livepatch and verify that the atomic replace livepatch
117 # is still active
118 # - remove the atomic replace livepatch and verify that none are active
120 echo -n "TEST: atomic replace livepatch ... "
121 dmesg -C
123 load_lp $MOD_LIVEPATCH
125 grep 'live patched' /proc/cmdline > /dev/kmsg
126 grep 'live patched' /proc/meminfo > /dev/kmsg
128 load_lp $MOD_REPLACE replace=1
130 grep 'live patched' /proc/cmdline > /dev/kmsg
131 grep 'live patched' /proc/meminfo > /dev/kmsg
133 unload_lp $MOD_LIVEPATCH
135 grep 'live patched' /proc/cmdline > /dev/kmsg
136 grep 'live patched' /proc/meminfo > /dev/kmsg
138 disable_lp $MOD_REPLACE
139 unload_lp $MOD_REPLACE
141 grep 'live patched' /proc/cmdline > /dev/kmsg
142 grep 'live patched' /proc/meminfo > /dev/kmsg
144 check_result "% modprobe $MOD_LIVEPATCH
145 livepatch: enabling patch '$MOD_LIVEPATCH'
146 livepatch: '$MOD_LIVEPATCH': initializing patching transition
147 livepatch: '$MOD_LIVEPATCH': starting patching transition
148 livepatch: '$MOD_LIVEPATCH': completing patching transition
149 livepatch: '$MOD_LIVEPATCH': patching complete
150 $MOD_LIVEPATCH: this has been live patched
151 % modprobe $MOD_REPLACE replace=1
152 livepatch: enabling patch '$MOD_REPLACE'
153 livepatch: '$MOD_REPLACE': initializing patching transition
154 livepatch: '$MOD_REPLACE': starting patching transition
155 livepatch: '$MOD_REPLACE': completing patching transition
156 livepatch: '$MOD_REPLACE': patching complete
157 $MOD_REPLACE: this has been live patched
158 % rmmod $MOD_LIVEPATCH
159 $MOD_REPLACE: this has been live patched
160 % echo 0 > /sys/kernel/livepatch/$MOD_REPLACE/enabled
161 livepatch: '$MOD_REPLACE': initializing unpatching transition
162 livepatch: '$MOD_REPLACE': starting unpatching transition
163 livepatch: '$MOD_REPLACE': completing unpatching transition
164 livepatch: '$MOD_REPLACE': unpatching complete
165 % rmmod $MOD_REPLACE"
168 exit 0