| From 0d3cbf637074803943047ac97f0d986526fead1a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 29 Oct 2024 11:13:24 +0800 |
| Subject: selftests/watchdog-test: Fix system accidentally reset after |
| watchdog-test |
| |
| From: Li Zhijian <lizhijian@fujitsu.com> |
| |
| [ Upstream commit dc1308bee1ed03b4d698d77c8bd670d399dcd04d ] |
| |
| When running watchdog-test with 'make run_tests', the watchdog-test will |
| be terminated by a timeout signal(SIGTERM) due to the test timemout. |
| |
| And then, a system reboot would happen due to watchdog not stop. see |
| the dmesg as below: |
| ``` |
| [ 1367.185172] watchdog: watchdog0: watchdog did not stop! |
| ``` |
| |
| Fix it by registering more signals(including SIGTERM) in watchdog-test, |
| where its signal handler will stop the watchdog. |
| |
| After that |
| # timeout 1 ./watchdog-test |
| Watchdog Ticking Away! |
| . |
| Stopping watchdog ticks... |
| |
| Link: https://lore.kernel.org/all/20241029031324.482800-1-lizhijian@fujitsu.com/ |
| Signed-off-by: Li Zhijian <lizhijian@fujitsu.com> |
| Reviewed-by: Shuah Khan <skhan@linuxfoundation.org> |
| Signed-off-by: Shuah Khan <skhan@linuxfoundation.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/testing/selftests/watchdog/watchdog-test.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| diff --git a/tools/testing/selftests/watchdog/watchdog-test.c b/tools/testing/selftests/watchdog/watchdog-test.c |
| index f45e510500c0d..09773695d219f 100644 |
| --- a/tools/testing/selftests/watchdog/watchdog-test.c |
| +++ b/tools/testing/selftests/watchdog/watchdog-test.c |
| @@ -242,7 +242,13 @@ int main(int argc, char *argv[]) |
| |
| printf("Watchdog Ticking Away!\n"); |
| |
| + /* |
| + * Register the signals |
| + */ |
| signal(SIGINT, term); |
| + signal(SIGTERM, term); |
| + signal(SIGKILL, term); |
| + signal(SIGQUIT, term); |
| |
| while (1) { |
| keep_alive(); |
| -- |
| 2.43.0 |
| |