[LTP] [PATCHv3] containers: Use ltp_syscall for setns incase some libc library do not support it

Hangbin Liu
2015-07-01T06:35:49Z

Use ltp_syscall for setns incase some libc library do not support it. Also
check whether we support setns in setup(). If it's support the syscall will
silently fails and test continues. If not, then tst_brkm call will end the
test with TCONF.

Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
---
testcases/kernel/containers/userns/userns04.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/testcases/kernel/containers/userns/userns04.c b/testcases/kernel/containers/userns/userns04.c
index 7077679..9836fd9 100644
--- a/testcases/kernel/containers/userns/userns04.c
+++ b/testcases/kernel/containers/userns/userns04.c
@@ -35,6 +35,7 @@ int TST_TOTAL = 1;
static void setup(void)
{
check_newuser();
+ ltp_syscall(__NR_setns, -1, 0);
tst_tmpdir();
TST_CHECKPOINT_INIT(NULL);
}
@@ -55,7 +56,7 @@ static int child_fn2(void *arg)
int exit_val = 0;
int ret;

- ret = setns(((long)arg), CLONE_NEWUSER);
+ ret = ltp_syscall(__NR_setns, ((long)arg), CLONE_NEWUSER);
if (ret != -1) {
printf("child2 setns() unexpected success\n");
exit_val = 1;
@@ -112,7 +113,7 @@ static void test_cap_sys_admin(void)
case -1:
tst_brkm(TBROK | TERRNO, cleanup, "fork");
case 0:
- if (setns(fd, CLONE_NEWUSER) == -1) {
+ if (ltp_syscall(__NR_setns, fd, CLONE_NEWUSER) == -1) {
printf("parent pid setns failure: (%d) %s",
errno, strerror(errno));
exit(1);
--
1.9.3