Lines Matching defs:err
26 static int error_set(struct error *err, int code, const char *fmt, ...)
31 if (code == PIDFD_PASS || !err || err->code != PIDFD_PASS)
34 err->code = code;
36 r = vsnprintf(err->msg, sizeof(err->msg), fmt, args);
37 assert((size_t)r < sizeof(err->msg));
43 static void error_report(struct error *err, const char *test_name)
45 switch (err->code) {
47 ksft_exit_fail_msg("%s test: Fatal: %s\n", test_name, err->msg);
52 ksft_test_result_error("%s test: %s\n", test_name, err->msg);
57 ksft_test_result_skip("%s test: %s\n", test_name, err->msg);
62 test_name, err->msg);
71 test_name, err->code, err->msg);
76 static inline int error_check(struct error *err, const char *test_name)
79 if (err->code == PIDFD_ERROR)
80 error_report(err, test_name);
82 return err->code;
94 struct error *err)
105 error_set(err, -1, "mmap of stack failed (errno %d)", errno);
116 error_set(err, PIDFD_ERROR, "clone failed (ret %d, errno %d)",
131 static inline int child_join(struct child *child, struct error *err)
137 error_set(err, PIDFD_ERROR, "waitpid failed (ret %d, errno %d)",
140 error_set(err, r, "child %d reported: %d", child->pid, r);
143 error_set(err, -1, "munmap of child stack failed (errno %d)", errno);
151 static inline int child_join_close(struct child *child, struct error *err)
154 return child_join(child, err);
165 static int verify_fdinfo(int pidfd, struct error *err, const char *prefix,
185 return error_set(err, PIDFD_ERROR, "fdinfo open failed for %d",
201 error_set(err, PIDFD_FAIL, "%s '%s' != '%s'",
211 return error_set(err, PIDFD_FAIL, "%s not found for fd %d",
219 struct error err;
245 r = verify_fdinfo(pidfd, &err, "NSpid:", 6, "\t0\n");
248 ksft_print_msg("NSpid fdinfo check failed: %s\n", err.msg);
256 struct error err = {0, };
260 a = clone_newns(child_fdinfo_nspid_test, NULL, &err);
261 error_check(&err, test_name);
268 b = clone_newns(child_fdinfo_nspid_test, &a.fd, &err);
269 error_check(&err, test_name);
274 verify_fdinfo(a.fd, &err, "NSpid:", 6, "\t%d\t%d\n", a.pid, 1);
275 verify_fdinfo(b.fd, &err, "NSpid:", 6, "\t%d\t%d\n", b.pid, 1);
278 * 'err' accordingly, if it is not already set.
280 child_join_close(&a, &err);
281 child_join_close(&b, &err);
283 error_report(&err, test_name);
289 struct error err = {0, };
293 a = clone_newns(child_fdinfo_nspid_test, NULL, &err);
294 error_check(&err, test_name);
295 child_join(&a, &err);
297 verify_fdinfo(a.fd, &err, "Pid:", 4, "\t-1\n");
298 verify_fdinfo(a.fd, &err, "NSpid:", 6, "\t-1\n");
300 error_report(&err, test_name);