@@ -4,8 +4,10 @@
#define _GNU_SOURCE
#include <errno.h>
+#include <inttypes.h>
#include <linux/types.h>
#include <linux/sched.h>
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/syscall.h>
@@ -39,7 +41,7 @@ static pid_t raw_clone(struct clone_args *args, size_t size)
return syscall(__NR_clone3, args, size);
}
-static int call_clone3(int flags, size_t size, enum test_mode test_mode)
+static int call_clone3(uint64_t flags, size_t size, enum test_mode test_mode)
{
struct clone_args args = {0};
pid_t ppid = -1;
@@ -117,12 +119,13 @@ static int call_clone3(int flags, size_t size, enum test_mode test_mode)
return 0;
}
-static int test_clone3(int flags, size_t size, int expected,
+static int test_clone3(uint64_t flags, size_t size, int expected,
enum test_mode test_mode)
{
int ret;
- ksft_print_msg("[%d] Trying clone3() with flags 0x%x (size %d)\n",
+ ksft_print_msg("[%d] Trying clone3() with flags %#" PRIx64 " (size %d)"
+ "\n",
getpid(), flags, size);
ret = call_clone3(flags, size, test_mode);
ksft_print_msg("[%d] clone3() with flags says :%d expected %d\n",
Flags parameter in both userspace and kernel clone args is 64-bit wide, there's little reason to have it signed and 32-bit in tests. * tools/testing/selftests/clone3/clone3.c: Include <inttypes.h> and <stdint.h>. (call_clone3): Change flags parameter type from int to uint64_t. (test_clone3): Change flags parameter type from int to uint64_t; change the format string that prints it accordingly. Signed-off-by: Eugene Syromiatnikov <esyr@redhat.com> --- tools/testing/selftests/clone3/clone3.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)