I see that the three syscalls seccomp, getrandom and memfd_create are not wired
because of which we get a warning while compilation.
So I wired them up in this patch. What else needs to be done? I tried the
memfd_test after compiling this kernel, but it is failing. What am I missing for
this to work? Any advice is really appreciated! :)
Signed-off-by: Pranith Kumar <redacted>
---
arch/powerpc/include/asm/systbl.h | 3 +++
arch/powerpc/include/asm/unistd.h | 2 +-
arch/powerpc/include/uapi/asm/unistd.h | 3 +++
3 files changed, 7 insertions(+), 1 deletion(-)
Hi Pranith,
On Sat, Aug 30, 2014 at 5:36 AM, Pranith Kumar [off-list ref] wrote:
I see that the three syscalls seccomp, getrandom and memfd_create are not wired
because of which we get a warning while compilation.
So I wired them up in this patch. What else needs to be done? I tried the
memfd_test after compiling this kernel, but it is failing. What am I missing for
this to work? Any advice is really appreciated! :)
Did it fail due to the (silly) "ifeq ($(ARCH),X86)" checks in
tools/testing/selftests/memfd/Makefile?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Hi Geert,
On Sun, Aug 31, 2014 at 4:53 AM, Geert Uytterhoeven
[off-list ref] wrote:
Hi Pranith,
On Sat, Aug 30, 2014 at 5:36 AM, Pranith Kumar [off-list ref] wrote:
quoted
I see that the three syscalls seccomp, getrandom and memfd_create are not wired
because of which we get a warning while compilation.
So I wired them up in this patch. What else needs to be done? I tried the
memfd_test after compiling this kernel, but it is failing. What am I missing for
this to work? Any advice is really appreciated! :)
Did it fail due to the (silly) "ifeq ($(ARCH),X86)" checks in
tools/testing/selftests/memfd/Makefile?
I removed that check and compiled memfd_test.c by hand. This is the
following error which I get when I run the test:
$ ./memfd_test
memfd: CREATE
memfd: BASIC
10 != 0 = GET_SEALS(3)
Aborted
This is basically when checking the seals which we already added. It
should return 10 (F_SEAL_SHRINK | F_SEAL_WRITE), instead it is returning 0.
What else needs to be done for this to properly work? I see that for
m68k, you just wired it up like in this patch. Did it work after that?
--
Pranith
Hi Pranith,
On Sun, Aug 31, 2014 at 2:52 PM, Pranith Kumar [off-list ref] wrote:
On Sun, Aug 31, 2014 at 4:53 AM, Geert Uytterhoeven
[off-list ref] wrote:
quoted
On Sat, Aug 30, 2014 at 5:36 AM, Pranith Kumar [off-list ref] wrote:
quoted
I see that the three syscalls seccomp, getrandom and memfd_create are not wired
because of which we get a warning while compilation.
So I wired them up in this patch. What else needs to be done? I tried the
memfd_test after compiling this kernel, but it is failing. What am I missing for
this to work? Any advice is really appreciated! :)
Did it fail due to the (silly) "ifeq ($(ARCH),X86)" checks in
tools/testing/selftests/memfd/Makefile?
I removed that check and compiled memfd_test.c by hand. This is the
following error which I get when I run the test:
$ ./memfd_test
memfd: CREATE
memfd: BASIC
10 != 0 = GET_SEALS(3)
Aborted
This is basically when checking the seals which we already added. It
should return 10 (F_SEAL_SHRINK | F_SEAL_WRITE), instead it is returning 0.
So it does fail.
What else needs to be done for this to properly work? I see that for
m68k, you just wired it up like in this patch. Did it work after that?
To be honest, I didn't run any tests.
I had a few spare minutes, so I wanted to give it a try, but "make kselftest"
doesn't work with building in a separate directory (O=), doesn't support
CROSS_COMPILE=, etc... So I gave up (for now).
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
From: David Herrmann <hidden> Date: 2014-08-31 14:34:07
Hi
On Sun, Aug 31, 2014 at 2:52 PM, Pranith Kumar [off-list ref] wrote:
Hi Geert,
On Sun, Aug 31, 2014 at 4:53 AM, Geert Uytterhoeven
[off-list ref] wrote:
quoted
Hi Pranith,
On Sat, Aug 30, 2014 at 5:36 AM, Pranith Kumar [off-list ref] wrote:
quoted
I see that the three syscalls seccomp, getrandom and memfd_create are not wired
because of which we get a warning while compilation.
So I wired them up in this patch. What else needs to be done? I tried the
memfd_test after compiling this kernel, but it is failing. What am I missing for
this to work? Any advice is really appreciated! :)
Did it fail due to the (silly) "ifeq ($(ARCH),X86)" checks in
tools/testing/selftests/memfd/Makefile?
I removed that check and compiled memfd_test.c by hand. This is the
following error which I get when I run the test:
$ ./memfd_test
memfd: CREATE
memfd: BASIC
10 != 0 = GET_SEALS(3)
Aborted
This is basically when checking the seals which we already added. It
should return 10 (F_SEAL_SHRINK | F_SEAL_WRITE), instead it is returning 0.
What else needs to be done for this to properly work? I see that for
m68k, you just wired it up like in this patch. Did it work after that?
The only arch-dependent code for memfd_test.c is the syscall invocation:
memfd_create(const char *name, unsigned int flags);
via glibc as:
syscall(__NR_memfd_create, name, flags);
Can you debug your test-run (maybe via simple printk() in mm/shmem.c
memfd_create()) and see what's going wrong there?
Thanks
David
The only arch-dependent code for memfd_test.c is the syscall invocation:
memfd_create(const char *name, unsigned int flags);
via glibc as:
syscall(__NR_memfd_create, name, flags);
Can you debug your test-run (maybe via simple printk() in mm/shmem.c
memfd_create()) and see what's going wrong there?
Hi David,
I figured out the problem. I am on a 32-bit system and using u64 for flags in fcntl() is the cause of the problem. Will you accept a patch making the test work on 32-bit systems as below?
Thanks!
--
Pranith
From: Pranith Kumar <redacted>
Date: Sun, 31 Aug 2014 13:38:07 -0400
Subject: [PATCH] memfd_test: Make it work on 32-bit systems
This test currently fails on 32-bit systems since we use u64 type to pass the
flags to fcntl.
This commit changes this to use u32 type for flags to fcntl making it work on
32-bit systems.
Signed-off-by: Pranith Kumar <redacted>
---
tools/testing/selftests/memfd/memfd_test.c | 32 +++++++++++++++---------------
1 file changed, 16 insertions(+), 16 deletions(-)
From: David Herrmann <hidden> Date: 2014-09-01 11:34:00
Hi
On Sun, Aug 31, 2014 at 7:51 PM, Pranith Kumar [off-list ref] wrote:
On 08/31/2014 10:34 AM, David Herrmann wrote:
quoted
The only arch-dependent code for memfd_test.c is the syscall invocation:
memfd_create(const char *name, unsigned int flags);
via glibc as:
syscall(__NR_memfd_create, name, flags);
Can you debug your test-run (maybe via simple printk() in mm/shmem.c
memfd_create()) and see what's going wrong there?
Hi David,
I figured out the problem. I am on a 32-bit system and using u64 for flags in fcntl() is the cause of the problem. Will you accept a patch making the test work on 32-bit systems as below?
Thanks!
--
Pranith
From: Pranith Kumar <redacted>
Date: Sun, 31 Aug 2014 13:38:07 -0400
Subject: [PATCH] memfd_test: Make it work on 32-bit systems
This test currently fails on 32-bit systems since we use u64 type to pass the
flags to fcntl.
This commit changes this to use u32 type for flags to fcntl making it work on
32-bit systems.
Nice catch. We changed 'flags' from u64 to "unsigned int" in the last
revision of the series. Patch looks good, but I'd prefer using
"unsigned int" as type, instead of __u32. Just to be consistent with
the syscall interface. The return type of F_GET_SEALS is actually
"int" and the MSB is reserved for signed error codes, so you can
savely use "int r = fcntl(fd, F_GET_SEALS, 0)" in
mfd_assert_get_seals().
Thanks
David
Hi David,
On Mon, Sep 1, 2014 at 7:33 AM, David Herrmann [off-list ref] wrote:
Nice catch. We changed 'flags' from u64 to "unsigned int" in the last
revision of the series. Patch looks good, but I'd prefer using
"unsigned int" as type, instead of __u32. Just to be consistent with
the syscall interface. The return type of F_GET_SEALS is actually
"int" and the MSB is reserved for signed error codes, so you can
savely use "int r = fcntl(fd, F_GET_SEALS, 0)" in
mfd_assert_get_seals().
OK. Should I send a new patch with these changes or do you have one
line up already?
--
Pranith
From: David Herrmann <hidden> Date: 2014-09-01 15:31:13
Hi
On Mon, Sep 1, 2014 at 5:21 PM, Pranith Kumar [off-list ref] wrote:
Hi David,
On Mon, Sep 1, 2014 at 7:33 AM, David Herrmann [off-list ref] wrote:
quoted
Nice catch. We changed 'flags' from u64 to "unsigned int" in the last
revision of the series. Patch looks good, but I'd prefer using
"unsigned int" as type, instead of __u32. Just to be consistent with
the syscall interface. The return type of F_GET_SEALS is actually
"int" and the MSB is reserved for signed error codes, so you can
savely use "int r = fcntl(fd, F_GET_SEALS, 0)" in
mfd_assert_get_seals().
OK. Should I send a new patch with these changes or do you have one
line up already?
I'd appreciate if you can resend it.
Btw., the original patch (wire up syscalls) can be applied unchanged.
Thanks
David