I got the same warning even with ubuntu new distro, this patch fixed
this issue.
$ gcc --version
gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ make -v
GNU Make 4.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ uname -a
Linux pek-lyang0-u17 4.10.0-38-generic #42-Ubuntu SMP Tue Oct 10
13:24:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
---------------------
memfd_test.c: In function mfd_assert_grow_write:
memfd_test.c:517:19: warning: format %d expects argument of type int,
but argument 2 has type size_t {aka long unsigned int} [-Wformat=]
printf("malloc(%d) failed: %m\n", mfd_def_size * 8);
^
memfd_test.c: In function mfd_fail_grow_write:
memfd_test.c:537:19: warning: format %d expects argument of type int,
but argument 2 has type size_t {aka long unsigned int} [-Wformat=]
printf("malloc(%d) failed: %m\n", mfd_def_size * 8);
Lei
On 2017年11月07日 07:46, Shuah Khan wrote:
> On 11/05/2017 03:56 AM, Lei Yang wrote:
>> Replace '%d' by '%zu' to fix the following compilation warning.
>>
>> memfd_test.c:517:3: warning: format ‘%d’ expects argument of
>> type ‘int’,but argument 2 has type ‘size_t’ [-Wformat=]
>> printf("malloc(%d) failed: %m\n", mfd_def_size * 8);
>> ^
>> memfd_test.c: In function ‘mfd_fail_grow_write’:
>> memfd_test.c:537:3: warning: format ‘%d’ expects argument
>> of type ‘int’,but argument 2 has type ‘size_t’ [-Wformat=]
>> printf("malloc(%d) failed: %m\n", mfd_def_size * 8);
>>
>> Signed-off-by: Lei Yang <Lei.Yang(a)windriver.com>
>> ---
>> tools/testing/selftests/memfd/memfd_test.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/tools/testing/selftests/memfd/memfd_test.c b/tools/testing/selftests/memfd/memfd_test.c
>> index f94c6d1..95df9e6 100644
>> --- a/tools/testing/selftests/memfd/memfd_test.c
>> +++ b/tools/testing/selftests/memfd/memfd_test.c
>> @@ -514,7 +514,7 @@ static void mfd_assert_grow_write(int fd)
>>
>> buf = malloc(mfd_def_size * 8);
>> if (!buf) {
>> - printf("malloc(%d) failed: %m\n", mfd_def_size * 8);
>> + printf("malloc(%zu) failed: %m\n", mfd_def_size * 8);
>> abort();
>> }
>>
>> @@ -534,7 +534,7 @@ static void mfd_fail_grow_write(int fd)
>>
>> buf = malloc(mfd_def_size * 8);
>> if (!buf) {
>> - printf("malloc(%d) failed: %m\n", mfd_def_size * 8);
>> + printf("malloc(%zu) failed: %m\n", mfd_def_size * 8);
>> abort();
>> }
>>
>>
> Relates to gcc version perhaps. What's your gcc version?
>
> thanks,
> -- Shuah
--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
On 11/06/2017 06:14 PM, lei yang wrote:
>
>
> On 2017年11月07日 07:35, Shuah Khan wrote:
>> On 11/05/2017 03:08 AM, Lei Yang wrote:
>>> I got below error message when building sync test:
>>>
>>> make[1]: Entering directory `tools/testing/selftests/sync'
>>> gcc -c sync.c -o tools/testing/selftests/sync/sync.o
>>> sync.c:42:29: fatal error: linux/sync_file.h: No such file or directory
>>> #include <linux/sync_file.h>
>>>
>>> obviously, CFLAGS and LDFLAGS are not used when comipling.
>>>
>>> Signed-off-by: Lei Yang <Lei.Yang(a)windriver.com>
>>> ---
>>> tools/testing/selftests/sync/Makefile | 4 ++--
>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/tools/testing/selftests/sync/Makefile b/tools/testing/selftests/sync/Makefile
>>> index 8e04d0a..46cbcc3 100644
>>> --- a/tools/testing/selftests/sync/Makefile
>>> +++ b/tools/testing/selftests/sync/Makefile
>>> @@ -29,9 +29,9 @@ $(TEST_CUSTOM_PROGS): $(TESTS) $(OBJS)
>>> $(CC) -o $(TEST_CUSTOM_PROGS) $(OBJS) $(TESTS) $(CFLAGS) $(LDFLAGS)
>>> $(OBJS): $(OUTPUT)/%.o: %.c
>>> - $(CC) -c $^ -o $@
>>> + $(CC) -c $^ -o $@ $(CFLAGS) $(LDFLAGS)
>>> $(TESTS): $(OUTPUT)/%.o: %.c
>>> - $(CC) -c $^ -o $@
>>> + $(CC) -c $^ -o $@ $(CFLAGS) $(LDFLAGS)
>>> EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(OBJS) $(TESTS)
>>>
>> How are you building the test? I am not seeing the error on linux-4.14.0-rc8
>
> make -C tools/testing/selftests
>
> Lei
>
>
Based on the information in your other emails, looks like you are
testing these patches on
$ cat /proc/version
Linux version 3.16.0-30-generic (buildd@kissel) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015
That explains why you aren't finding sync_file.h header. This test isn't applicable
to Linux 3.16. In any case, I can't take patches that aren't tested on the latest
kernel release. 3.16 is very old.
thanks,
-- Shuah
--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Nov 07, 2017 at 08:32:16AM +0100, Florian Weimer wrote:
> * Ram Pai:
>
> > On Mon, Nov 06, 2017 at 10:28:41PM +0100, Florian Weimer wrote:
> >> * Ram Pai:
> >>
> >> > Testing:
> >> > -------
> >> > This patch series has passed all the protection key
> >> > tests available in the selftest directory.The
> >> > tests are updated to work on both x86 and powerpc.
> >> > The selftests have passed on x86 and powerpc hardware.
> >>
> >> How do you deal with the key reuse problem? Is it the same as x86-64,
> >> where it's quite easy to accidentally grant existing threads access to
> >> a just-allocated key, either due to key reuse or a changed init_pkru
> >> parameter?
> >
> > I am not sure how on x86-64, two threads get allocated the same key
> > at the same time? the key allocation is guarded under the mmap_sem
> > semaphore. So there cannot be a race where two threads get allocated
> > the same key.
>
> The problem is a pkey_alloc/pthread_create/pkey_free/pkey_alloc
> sequence. The pthread_create call makes the new thread inherit the
> access rights of the current thread, but then the key is deallocated.
> Reallocation of the same key will have that thread retain its access
> rights, which is IMHO not correct.
(Dave Hansen: please correct me if I miss-speak below)
As per the current semantics of sys_pkey_free(); the way I understand it,
the calling thread is saying disassociate me from this key. Other
threads continue to be associated with the key and could continue to
get key-faults, but this calling thread will not get key-faults on that
key any more.
Also the key should not get reallocated till all the threads in the process
have disassocated from the key; by calling sys_pkey_free().
>From that point of view, I think there is a bug in the implementation of
pkey on x86 and now on powerpc aswell.
>
> > Can you point me to the issue, if it is already discussed somewhere?
>
> See ‘MPK: pkey_free and key reuse’ on various lists (including
> linux-mm and linux-arch).
>
> It has a test case attached which demonstrates the behavior.
>
> > As far as the semantics is concerned, a key allocated in one thread's
> > context has no meaning if used in some other threads context within the
> > same process. The app should not try to re-use a key allocated in a
> > thread's context in some other threads's context.
>
> Uh-oh, that's not how this feature works on x86-64 at all. There, the
> keys are a process-global resource. Treating them per-thread
> seriously reduces their usefulness.
Sorry. I was not thinking right. Let me restate.
A key is a global resource, but the permissions on a key is
local to a thread. For eg: the same key could disable
access on a page for one thread, while it could disable write
on the same page on another thread.
>
> >> What about siglongjmp from a signal handler?
> >
> > On powerpc there is some relief. the permissions on a key can be
> > modified from anywhere, including from the signal handler, and the
> > effect will be immediate. You dont have to wait till the
> > signal handler returns for the key permissions to be restore.
>
> My concern is that the signal handler knows nothing about protection
> keys, but the current x86-64 semantics will cause it to clobber the
> access rights of the current thread.
>
> > also after return from the sigsetjmp();
> > possibly caused by siglongjmp(), the program can restore the permission
> > on any key.
>
> So that's not really an option.
>
> > Atleast that is my theory. Can you give me a testcase; if you have one
> > handy.
>
> The glibc patch I posted under the ‘MPK: pkey_free and key reuse’
> thread covers this, too.
thanks. will try the test case with my kernel patches. But, on
powerpc one can change the permissions on the key in the signal handler
which takes into effect immediately, there should not be a bug
in powerpc.
x86 has this requirement where it has to return from the signal handler
back to the kernel in order to change the permission on a key,
it can cause issues with longjump.
RP
--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
From: Naresh Kamboju <naresh.kamboju(a)linaro.org>
test_kmod.sh reported false failure when module not present.
Instead check test_bpf.ko is present in the path before loading it.
Signed-off-by: Naresh Kamboju <naresh.kamboju(a)linaro.org>
---
tools/testing/selftests/bpf/test_kmod.sh | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/bpf/test_kmod.sh b/tools/testing/selftests/bpf/test_kmod.sh
index 6d58cca8e235..2e5a1049e2f2 100755
--- a/tools/testing/selftests/bpf/test_kmod.sh
+++ b/tools/testing/selftests/bpf/test_kmod.sh
@@ -9,9 +9,11 @@ test_run()
echo "[ JIT enabled:$1 hardened:$2 ]"
dmesg -C
- insmod $SRC_TREE/lib/test_bpf.ko 2> /dev/null
- if [ $? -ne 0 ]; then
- rc=1
+ if [ -f ${SRC_TREE}/lib/test_bpf.ko ]; then
+ insmod ${SRC_TREE}/lib/test_bpf.ko 2> /dev/null
+ if [ $? -ne 0 ]; then
+ rc=1
+ fi
fi
rmmod test_bpf 2> /dev/null
dmesg | grep FAIL
--
2.14.2
--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html