All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Brauner <christian.brauner@ubuntu.com>
To: Kees Cook <keescook@chromium.org>
Cc: linux-kernel@vger.kernel.org,
	Thadeu Lima de Souza Cascardo <cascardo@canonical.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Christian Brauner <christian@brauner.io>,
	Andy Lutomirski <luto@amacapital.net>,
	Will Drewry <wad@chromium.org>,
	linux-kselftest@vger.kernel.org, linux-mips@vger.kernel.org,
	linux-xtensa@linux-xtensa.org,
	linux-arm-kernel@lists.infradead.org,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH 14/15] selftests/clone3: Avoid OS-defined clone_args
Date: Tue, 15 Sep 2020 18:25:28 +0200	[thread overview]
Message-ID: <20200915162528.x7admy45pdqsoke4@wittgenstein> (raw)
In-Reply-To: <20200912110820.597135-15-keescook@chromium.org>

On Sat, Sep 12, 2020 at 04:08:19AM -0700, Kees Cook wrote:
> As the UAPI headers start to appear in distros, we need to avoid
> outdated versions of struct clone_args to be able to test modern
> features. Additionally pull in the syscall numbers correctly.
> 
> Signed-off-by: Kees Cook <keescook@chromium.org>
> ---

Hm, with this patch applied I'm getting:

gcc -g -I../../../../usr/include/    clone3_set_tid.c /home/brauner/src/git/linux/linux/tools/testing/selftests/kselftest_harness.h /home/brauner/src/git/linux/linux/tools/testing/selftests/kselftest.h -lcap -o /home/brauner/src/git/linux/linux/tools/testing/selftests/clone3/clone3_set_tid
In file included from clone3_set_tid.c:24:
clone3_selftests.h:37:8: error: redefinition of ‘struct clone_args’
   37 | struct clone_args {
      |        ^~~~~~~~~~
In file included from clone3_set_tid.c:12:
/usr/include/linux/sched.h:92:8: note: originally defined here
   92 | struct clone_args {
      |        ^~~~~~~~~~
make: *** [../lib.mk:140: /home/brauner/src/git/linux/linux/tools/testing/selftests/clone3/clone3_set_tid] Error 1

One trick to avoid this could be:

#ifndef CLONE_ARGS_SIZE_VER0
#define CLONE_ARGS_SIZE_VER0 64 /* sizeof first published struct */
#endif

#ifndef CLONE_ARGS_SIZE_VER1
#define CLONE_ARGS_SIZE_VER1 80 /* sizeof second published struct */
#endif

#ifndef CLONE_ARGS_SIZE_VER2
#define CLONE_ARGS_SIZE_VER2 88 /* sizeof third published struct */
#endif

struct __clone_args {
	__aligned_u64 flags;
	__aligned_u64 pidfd;
	__aligned_u64 child_tid;
	__aligned_u64 parent_tid;
	__aligned_u64 exit_signal;
	__aligned_u64 stack;
	__aligned_u64 stack_size;
	__aligned_u64 tls;
	__aligned_u64 set_tid;
	__aligned_u64 set_tid_size;
	__aligned_u64 cgroup;
};

static pid_t sys_clone3(struct __clone_args *args, size_t size)
{
	return syscall(__NR_clone3, args, size);
}

Christian

WARNING: multiple messages have this Message-ID (diff)
From: Christian Brauner <christian.brauner@ubuntu.com>
To: Kees Cook <keescook@chromium.org>
Cc: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>,
	Will Drewry <wad@chromium.org>,
	linux-xtensa@linux-xtensa.org, linux-kernel@vger.kernel.org,
	Andy Lutomirski <luto@amacapital.net>,
	Max Filippov <jcmvbkbc@gmail.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kselftest@vger.kernel.org, linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	Christian Brauner <christian@brauner.io>
Subject: Re: [PATCH 14/15] selftests/clone3: Avoid OS-defined clone_args
Date: Tue, 15 Sep 2020 18:25:28 +0200	[thread overview]
Message-ID: <20200915162528.x7admy45pdqsoke4@wittgenstein> (raw)
In-Reply-To: <20200912110820.597135-15-keescook@chromium.org>

On Sat, Sep 12, 2020 at 04:08:19AM -0700, Kees Cook wrote:
> As the UAPI headers start to appear in distros, we need to avoid
> outdated versions of struct clone_args to be able to test modern
> features. Additionally pull in the syscall numbers correctly.
> 
> Signed-off-by: Kees Cook <keescook@chromium.org>
> ---

Hm, with this patch applied I'm getting:

gcc -g -I../../../../usr/include/    clone3_set_tid.c /home/brauner/src/git/linux/linux/tools/testing/selftests/kselftest_harness.h /home/brauner/src/git/linux/linux/tools/testing/selftests/kselftest.h -lcap -o /home/brauner/src/git/linux/linux/tools/testing/selftests/clone3/clone3_set_tid
In file included from clone3_set_tid.c:24:
clone3_selftests.h:37:8: error: redefinition of ‘struct clone_args’
   37 | struct clone_args {
      |        ^~~~~~~~~~
In file included from clone3_set_tid.c:12:
/usr/include/linux/sched.h:92:8: note: originally defined here
   92 | struct clone_args {
      |        ^~~~~~~~~~
make: *** [../lib.mk:140: /home/brauner/src/git/linux/linux/tools/testing/selftests/clone3/clone3_set_tid] Error 1

One trick to avoid this could be:

#ifndef CLONE_ARGS_SIZE_VER0
#define CLONE_ARGS_SIZE_VER0 64 /* sizeof first published struct */
#endif

#ifndef CLONE_ARGS_SIZE_VER1
#define CLONE_ARGS_SIZE_VER1 80 /* sizeof second published struct */
#endif

#ifndef CLONE_ARGS_SIZE_VER2
#define CLONE_ARGS_SIZE_VER2 88 /* sizeof third published struct */
#endif

struct __clone_args {
	__aligned_u64 flags;
	__aligned_u64 pidfd;
	__aligned_u64 child_tid;
	__aligned_u64 parent_tid;
	__aligned_u64 exit_signal;
	__aligned_u64 stack;
	__aligned_u64 stack_size;
	__aligned_u64 tls;
	__aligned_u64 set_tid;
	__aligned_u64 set_tid_size;
	__aligned_u64 cgroup;
};

static pid_t sys_clone3(struct __clone_args *args, size_t size)
{
	return syscall(__NR_clone3, args, size);
}

Christian

WARNING: multiple messages have this Message-ID (diff)
From: Christian Brauner <christian.brauner@ubuntu.com>
To: Kees Cook <keescook@chromium.org>
Cc: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>,
	Will Drewry <wad@chromium.org>,
	linux-xtensa@linux-xtensa.org,
	Michael Ellerman <mpe@ellerman.id.au>,
	linux-kernel@vger.kernel.org,
	Andy Lutomirski <luto@amacapital.net>,
	Max Filippov <jcmvbkbc@gmail.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kselftest@vger.kernel.org, linux-mips@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org,
	Christian Brauner <christian@brauner.io>
Subject: Re: [PATCH 14/15] selftests/clone3: Avoid OS-defined clone_args
Date: Tue, 15 Sep 2020 18:25:28 +0200	[thread overview]
Message-ID: <20200915162528.x7admy45pdqsoke4@wittgenstein> (raw)
In-Reply-To: <20200912110820.597135-15-keescook@chromium.org>

On Sat, Sep 12, 2020 at 04:08:19AM -0700, Kees Cook wrote:
> As the UAPI headers start to appear in distros, we need to avoid
> outdated versions of struct clone_args to be able to test modern
> features. Additionally pull in the syscall numbers correctly.
> 
> Signed-off-by: Kees Cook <keescook@chromium.org>
> ---

Hm, with this patch applied I'm getting:

gcc -g -I../../../../usr/include/    clone3_set_tid.c /home/brauner/src/git/linux/linux/tools/testing/selftests/kselftest_harness.h /home/brauner/src/git/linux/linux/tools/testing/selftests/kselftest.h -lcap -o /home/brauner/src/git/linux/linux/tools/testing/selftests/clone3/clone3_set_tid
In file included from clone3_set_tid.c:24:
clone3_selftests.h:37:8: error: redefinition of ‘struct clone_args’
   37 | struct clone_args {
      |        ^~~~~~~~~~
In file included from clone3_set_tid.c:12:
/usr/include/linux/sched.h:92:8: note: originally defined here
   92 | struct clone_args {
      |        ^~~~~~~~~~
make: *** [../lib.mk:140: /home/brauner/src/git/linux/linux/tools/testing/selftests/clone3/clone3_set_tid] Error 1

One trick to avoid this could be:

#ifndef CLONE_ARGS_SIZE_VER0
#define CLONE_ARGS_SIZE_VER0 64 /* sizeof first published struct */
#endif

#ifndef CLONE_ARGS_SIZE_VER1
#define CLONE_ARGS_SIZE_VER1 80 /* sizeof second published struct */
#endif

#ifndef CLONE_ARGS_SIZE_VER2
#define CLONE_ARGS_SIZE_VER2 88 /* sizeof third published struct */
#endif

struct __clone_args {
	__aligned_u64 flags;
	__aligned_u64 pidfd;
	__aligned_u64 child_tid;
	__aligned_u64 parent_tid;
	__aligned_u64 exit_signal;
	__aligned_u64 stack;
	__aligned_u64 stack_size;
	__aligned_u64 tls;
	__aligned_u64 set_tid;
	__aligned_u64 set_tid_size;
	__aligned_u64 cgroup;
};

static pid_t sys_clone3(struct __clone_args *args, size_t size)
{
	return syscall(__NR_clone3, args, size);
}

Christian

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2020-09-15 22:22 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-12 11:08 [PATCH 00/15] selftests/seccomp: Refactor change_syscall() Kees Cook
2020-09-12 11:08 ` Kees Cook
2020-09-12 11:08 ` Kees Cook
2020-09-12 11:08 ` [PATCH 01/15] selftests/seccomp: Refactor arch register macros to avoid xtensa special case Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 15:51   ` Christian Brauner
2020-09-15 15:51     ` Christian Brauner
2020-09-15 15:51     ` Christian Brauner
2020-09-12 11:08 ` [PATCH 02/15] selftests/seccomp: Provide generic syscall setting macro Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 15:53   ` Christian Brauner
2020-09-15 15:53     ` Christian Brauner
2020-09-15 15:53     ` Christian Brauner
2020-09-12 11:08 ` [PATCH 03/15] selftests/seccomp: mips: Define SYSCALL_NUM_SET macro Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 15:55   ` Christian Brauner
2020-09-15 15:55     ` Christian Brauner
2020-09-15 15:55     ` Christian Brauner
2020-09-18 22:00     ` Kees Cook
2020-09-18 22:00       ` Kees Cook
2020-09-18 22:00       ` Kees Cook
2020-09-12 11:08 ` [PATCH 04/15] selftests/seccomp: arm: " Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 15:56   ` Christian Brauner
2020-09-15 15:56     ` Christian Brauner
2020-09-15 15:56     ` Christian Brauner
2020-09-12 11:08 ` [PATCH 05/15] selftests/seccomp: arm64: " Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 15:58   ` Christian Brauner
2020-09-15 15:58     ` Christian Brauner
2020-09-15 15:58     ` Christian Brauner
2020-09-12 11:08 ` [PATCH 06/15] selftests/seccomp: mips: Remove O32-specific macro Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 16:00   ` Christian Brauner
2020-09-15 16:00     ` Christian Brauner
2020-09-15 16:00     ` Christian Brauner
2020-09-12 11:08 ` [PATCH 07/15] selftests/seccomp: Remove syscall setting #ifdefs Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 16:01   ` Christian Brauner
2020-09-15 16:01     ` Christian Brauner
2020-09-15 16:01     ` Christian Brauner
2020-09-12 11:08 ` [PATCH 08/15] selftests/seccomp: Convert HAVE_GETREG into ARCH_GETREG/ARCH_SETREG Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 16:03   ` Christian Brauner
2020-09-15 16:03     ` Christian Brauner
2020-09-15 16:03     ` Christian Brauner
2020-09-12 11:08 ` [PATCH 09/15] selftests/seccomp: Convert REGSET calls " Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 16:05   ` Christian Brauner
2020-09-15 16:05     ` Christian Brauner
2020-09-15 16:05     ` Christian Brauner
2020-09-12 11:08 ` [PATCH 10/15] selftests/seccomp: Avoid redundant register flushes Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 16:08   ` Christian Brauner
2020-09-15 16:08     ` Christian Brauner
2020-09-15 16:08     ` Christian Brauner
2020-09-12 11:08 ` [PATCH 11/15] selftests/seccomp: Remove SYSCALL_NUM_RET_SHARE_REG in favor of SYSCALL_RET_SET Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 16:11   ` Christian Brauner
2020-09-15 16:11     ` Christian Brauner
2020-09-15 16:11     ` Christian Brauner
2020-09-12 11:08 ` [PATCH 12/15] selftests/seccomp: powerpc: Fix seccomp return value testing Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-14  3:38   ` Michael Ellerman
2020-09-14  3:38     ` Michael Ellerman
2020-09-14  3:38     ` Michael Ellerman
2020-09-12 11:08 ` [PATCH 13/15] selftests/seccomp: powerpc: Set syscall return during ptrace syscall exit Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-14  5:47   ` Michael Ellerman
2020-09-14  5:47     ` Michael Ellerman
2020-09-14  5:47     ` Michael Ellerman
2020-09-14 20:20     ` Kees Cook
2020-09-14 20:20       ` Kees Cook
2020-09-14 20:20       ` Kees Cook
2020-09-12 11:08 ` [PATCH 14/15] selftests/clone3: Avoid OS-defined clone_args Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 16:25   ` Christian Brauner [this message]
2020-09-15 16:25     ` Christian Brauner
2020-09-15 16:25     ` Christian Brauner
2020-09-18 22:00     ` Kees Cook
2020-09-18 22:00       ` Kees Cook
2020-09-18 22:00       ` Kees Cook
2020-09-12 11:08 ` [PATCH 15/15] selftests/seccomp: Use __NR_mknodat instead of __NR_mknod Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-12 11:08   ` Kees Cook
2020-09-15 16:16   ` Christian Brauner
2020-09-15 16:16     ` Christian Brauner
2020-09-15 16:16     ` Christian Brauner
2020-09-14 12:15 ` [PATCH 00/15] selftests/seccomp: Refactor change_syscall() Michael Ellerman
2020-09-14 12:15   ` Michael Ellerman
2020-09-14 12:15   ` Michael Ellerman
2020-09-14 20:32   ` Kees Cook
2020-09-14 20:32     ` Kees Cook
2020-09-14 20:32     ` Kees Cook
2020-09-15 11:12     ` Max Filippov
2020-09-15 11:12       ` Max Filippov
2020-09-15 11:12       ` Max Filippov
2020-09-15 12:52     ` Michael Ellerman
2020-09-15 12:52       ` Michael Ellerman
2020-09-15 12:52       ` Michael Ellerman
2020-09-15  8:45 ` Max Filippov
2020-09-15  8:45   ` Max Filippov
2020-09-15  8:45   ` Max Filippov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200915162528.x7admy45pdqsoke4@wittgenstein \
    --to=christian.brauner@ubuntu.com \
    --cc=cascardo@canonical.com \
    --cc=christian@brauner.io \
    --cc=jcmvbkbc@gmail.com \
    --cc=keescook@chromium.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=luto@amacapital.net \
    --cc=mpe@ellerman.id.au \
    --cc=wad@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.