new file mode 100644
GIT binary patch
literal 16384
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
UrBuzo*8DK}mpY#Cz~34C2N*U}KL7v#
literal 0
HcmV?d00001
@@ -182,6 +182,9 @@ int file_lines_scanf(const char *file, const int lineno,
fp = fopen(path, "r");
if (fp == NULL) {
+ if (strict == 0 && errno == ENOENT)
+ return 1;
+
tst_brkm_(file, lineno, TBROK | TERRNO, cleanup_fn,
"Failed to open FILE '%s' for reading", path);
return 1;
There is a race window between readdir() and fopen() in line 125~131 of lib function get_used_pids. A process could terminate after its directory entry is read but before its status file is opened. When fopen() is called, the status file may no longer exist, resulting in an error like: tag=msgstress01__with_dmesg_entry stime=1723563200 ... tst_test.c:1617: TINFO: Timeout per run is 0h 03m 30s tst_pid.c:128: TBROK: Failed to open FILE '/proc/73429/status' for reading: ENOENT (2) To resolve this, the file_lines_scanf() function is modified to handle ENOENT errors gracefully when strict mode is not enabled. If fopen() fails due to ENOENT, the function now returns 1 to skip the missing file instead of treating it as a critical error. Reported-by: Paul Bunyan <pbunyan@redhat.com> Analysed-by: Charles Mirabile <cmirabil@redhat.com> Signed-off-by: Li Wang <liwang@redhat.com> --- lib/.tst_pid.c.swo | Bin 0 -> 16384 bytes lib/safe_file_ops.c | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 lib/.tst_pid.c.swo