Commit b4d777a1 authored by Li Zhijian's avatar Li Zhijian Committed by JSY
Browse files

selftests/watchdog-test: Fix system accidentally reset after watchdog-test

mainline inclusion
from mainline-v6.12-rc6
commit dc1308bee1ed03b4d698d77c8bd670d399dcd04d
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IB6TLK

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=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: default avatarLi Zhijian <lizhijian@fujitsu.com>
Reviewed-by: default avatarShuah Khan <skhan@linuxfoundation.org>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
Signed-off-by: default avatarJiangshan Yi <yijiangshan@kylinos.cn>
parent dccd6d84
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -334,7 +334,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();