[PATCH v2 2/2] tst_cgroup: tolerate ESRCH in cgroup_drain()

Andrea Cervesato <[email protected]>
Newsgroups gmane.linux.ltp
Message-ID <[email protected]>
From: Andrea Cervesato <andrea.cervesato-IBi9RG/[email protected]>

A process can die between reading cgroup.procs and writing its PID
to the destination cgroup. When this happens, the kernel returns
ESRCH which is a normal race condition, not a test infrastructure
failure.

Skip ESRCH errors instead of aborting with TBROK.

Signed-off-by: Andrea Cervesato <andrea.cervesato-IBi9RG/[email protected]>
---
 lib/tst_cgroup.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/tst_cgroup.c b/lib/tst_cgroup.c
index a37bf1516aabfbcb9a02fedd6fddb98e85ecc653..f548c0e01cf60803ad4c1e898e7ec2d39dc33c84 100644
--- a/lib/tst_cgroup.c
+++ b/lib/tst_cgroup.c
@@ -974,8 +974,12 @@ static void cgroup_drain(const enum tst_cg_ver ver,
 	for (tok = strtok(pid_list, "\n"); tok; tok = strtok(NULL, "\n")) {
 		ret = dprintf(fd, "%s", tok);
 
-		if (ret < (ssize_t)strlen(tok))
+		if (ret < (ssize_t)strlen(tok)) {
+			if (ret < 0 && errno == ESRCH)
+				continue;
+
 			tst_brk(TBROK | TERRNO, "Failed to drain %s", tok);
+		}
 	}
 	SAFE_CLOSE(fd);
 }

-- 
2.51.0


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.