#define RUN_CLONE_CHILD(clone_ret, flags, _setup_, _child_body_, \
_parent_setup_, _parent_body_) ({ \
- pid_t pid, rpid; \
- int ret; \
- int efd = -1; \
+ pid_t _pid_, _rpid_; \
+ int _ret_; \
+ int _efd_ = -1; \
\
_setup_; \
- efd = eventfd(0, EFD_CLOEXEC); \
- ASSERT_RETURN(efd,>=,0); \
+ _efd_ = eventfd(0, EFD_CLOEXEC); \
+ ASSERT_RETURN(_efd_,>=,0); \
*(clone_ret) = 0; \
- pid = syscall(__NR_clone, flags, NULL); \
- if (pid == 0) { \
- eventfd_t event_status = 0; \
- ASSERT_EXIT_ZERO(prctl(PR_SET_PDEATHSIG, SIGKILL)); \
- ret = eventfd_read(efd, &event_status); \
- if (ret < 0 || event_status != 1) { \
+ _pid_ = syscall(__NR_clone, flags, NULL); \
+ if (_pid_ == 0) { \
+ eventfd_t _event_status_ = 0; \
+ ASSERT_EXIT_ZERO(prctl(PR_SET_PDEATHSIG, SIGKILL)); \
+ _ret_ = eventfd_read(_efd_, &_event_status_); \
+ if (_ret_ < 0 || _event_status_ != 1) { \
kdbus_printf("error eventfd_read()\n"); \
exit(EXIT_FAILURE); \
} \
_child_body_; \
exit(0); \
- } else if (pid > 0) { \
+ } else if (_pid_ > 0) { \
_parent_setup_; \
- ASSERT_RETURN(eventfd_write(efd, 1),>=,0); \
+ ASSERT_RETURN(eventfd_write(_efd_, 1),>=,0); \
_parent_body_; \
- rpid = waitpid(pid, &ret, 0); \
- ASSERT_RETURN(rpid,==,pid); \
- ASSERT_NONZERO(WIFEXITED(ret)); \
- ASSERT_ZERO(WEXITSTATUS(ret)); \
- ret = TEST_OK; \
+ _rpid_ = waitpid(_pid_, &_ret_, 0); \
+ ASSERT_RETURN(_rpid_,==,_pid_); \
+ ASSERT_NONZERO(WIFEXITED(_ret_)); \
+ ASSERT_ZERO(WEXITSTATUS(_ret_)); \
+ _ret_ = TEST_OK; \
} else { \
- ret = -errno; \
+ _ret_ = -errno; \
*(clone_ret) = -errno; \
} \
- CLOSE(efd); \
- ret; \
+ CLOSE(_efd_); \
+ _ret_; \
})
#define ASSERT_NO_PENDING(CONN) do {\
kdbus_conn_free(userns_conn);
}),
({
- /* Parent setup map child uid/gid */
- ASSERT_EXIT_ZERO(userns_map_uid_gid(pid, "0 65534 1", "0 65534 1"));
+ /* Parent setup map child uid/gid.
+ * NB: _pid_ is declared by the macro */
+ ASSERT_EXIT_ZERO(userns_map_uid_gid(_pid_, "0 65534 1", "0 65534 1"));
}),
({ 0; }));
/* Unprivileged was not able to create user namespace */