2015-11-09 10:15:34

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH 0/2] selftests/mlock2: Build warning fixes on Debian/m68k 4.0

Hi,

The following 2 patches are needed to fix build warnings on Debian/m68k
4.0.

However, after wiring up the mlock2 syscall, the test fails with:

# ./mlock2-tests
fread kpageflags: Success
#

as the fread() call returns 0, not 1.

The original commit description for the test said "Note that the limit
test needs to be run a normal user.". But running it as a non-root user
also fails:

$ ./mlock2-tests
fopen kpageflags: Permission denied
$ ls -l /proc/kpageflags
-r-------- 1 root root 0 Nov 9 11:05 /proc/kpageflags
$

What am I missing?

Thanks!

Geert Uytterhoeven (2):
selftests/mlock2: Add missing #define _GNU_SOURCE
selftests/mlock2: Add ULL prefix to 64-bit constants

tools/testing/selftests/vm/mlock2-tests.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

--
1.9.1

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

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


2015-11-09 10:15:40

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH 1/2] selftests/mlock2: Add missing #define _GNU_SOURCE

On glibc 2.3.6:

mlock2-tests.c: In function 'seek_to_smaps_entry':
mlock2-tests.c:158: warning: implicit declaration of function 'getline'

According to the manpage of getline(), it needs _GNU_SOURCE before glibc
2.10.

Signed-off-by: Geert Uytterhoeven <[email protected]>
---
tools/testing/selftests/vm/mlock2-tests.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/tools/testing/selftests/vm/mlock2-tests.c b/tools/testing/selftests/vm/mlock2-tests.c
index 4431994aade2ef6f..cb247219f1f72889 100644
--- a/tools/testing/selftests/vm/mlock2-tests.c
+++ b/tools/testing/selftests/vm/mlock2-tests.c
@@ -1,3 +1,4 @@
+#define _GNU_SOURCE
#include <sys/mman.h>
#include <stdint.h>
#include <stdio.h>
--
1.9.1

2015-11-09 10:15:26

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH 2/2] selftests/mlock2: Add ULL prefix to 64-bit constants

On 32-bit (e.g. m68k):

mlock2-tests.c: In function 'lock_check':
mlock2-tests.c:293: warning: integer constant is too large for 'long' type
mlock2-tests.c:294: warning: integer constant is too large for 'long' type
mlock2-tests.c:299: warning: integer constant is too large for 'long' type
mlock2-tests.c:300: warning: integer constant is too large for 'long' type
mlock2-tests.c: In function 'unlock_lock_check':
mlock2-tests.c:329: warning: integer constant is too large for 'long' type
mlock2-tests.c:330: warning: integer constant is too large for 'long' type
mlock2-tests.c: In function 'onfault_check':
mlock2-tests.c:398: warning: integer constant is too large for 'long' type
mlock2-tests.c:398: warning: integer constant is too large for 'long' type
mlock2-tests.c:408: warning: integer constant is too large for 'long' type
mlock2-tests.c:411: warning: integer constant is too large for 'long' type
mlock2-tests.c:416: warning: integer constant is too large for 'long' type
mlock2-tests.c: In function 'unlock_onfault_check':
mlock2-tests.c:443: warning: integer constant is too large for 'long' type
mlock2-tests.c: In function 'test_lock_onfault_of_present':
mlock2-tests.c:528: warning: integer constant is too large for 'long' type
mlock2-tests.c:529: warning: integer constant is too large for 'long' type

Signed-off-by: Geert Uytterhoeven <[email protected]>
---
tools/testing/selftests/vm/mlock2-tests.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/vm/mlock2-tests.c b/tools/testing/selftests/vm/mlock2-tests.c
index cb247219f1f72889..02ca5e0177c539c7 100644
--- a/tools/testing/selftests/vm/mlock2-tests.c
+++ b/tools/testing/selftests/vm/mlock2-tests.c
@@ -277,8 +277,8 @@ out:
return ret;
}

-#define PRESENT_BIT 0x8000000000000000
-#define PFN_MASK 0x007FFFFFFFFFFFFF
+#define PRESENT_BIT 0x8000000000000000ULL
+#define PFN_MASK 0x007FFFFFFFFFFFFFULL
#define UNEVICTABLE_BIT (1UL << 18)

static int lock_check(char *map)
--
1.9.1

2015-11-09 15:48:40

by Eric B Munson

[permalink] [raw]
Subject: Re: [PATCH 0/2] selftests/mlock2: Build warning fixes on Debian/m68k 4.0

On Mon, 09 Nov 2015, Geert Uytterhoeven wrote:

> Hi,
>
> The following 2 patches are needed to fix build warnings on Debian/m68k
> 4.0.
>
> However, after wiring up the mlock2 syscall, the test fails with:
>
> # ./mlock2-tests
> fread kpageflags: Success
> #
>
> as the fread() call returns 0, not 1.

This would fail is the index into the kpageflags file is not being
calculated properly. This tests works on x86_64 (I am in the process of
testing x86 incase this is a 32bit issue). I am fairly sure that I
tested it on x86, but it has been a while.

>
> The original commit description for the test said "Note that the limit
> test needs to be run a normal user.". But running it as a non-root user
> also fails:

The original commit says that the on-fault-limit test needs to be run as
a regular user becuase it relies on enforcing memory limits.
mlock2-tests has to be run as root to get access to the various files
under /proc it needs to verify things are working.

>
> $ ./mlock2-tests
> fopen kpageflags: Permission denied
> $ ls -l /proc/kpageflags
> -r-------- 1 root root 0 Nov 9 11:05 /proc/kpageflags
> $
>
> What am I missing?
>
> Thanks!
>
> Geert Uytterhoeven (2):
> selftests/mlock2: Add missing #define _GNU_SOURCE
> selftests/mlock2: Add ULL prefix to 64-bit constants
>
> tools/testing/selftests/vm/mlock2-tests.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> --
> 1.9.1
>
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
>
> 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


Attachments:
(No filename) (1.72 kB)
signature.asc (819.00 B)
Digital signature
Download all attachments

2015-11-09 16:00:04

by Eric B Munson

[permalink] [raw]
Subject: Re: [PATCH 1/2] selftests/mlock2: Add missing #define _GNU_SOURCE

On Mon, 09 Nov 2015, Geert Uytterhoeven wrote:

> On glibc 2.3.6:
>
> mlock2-tests.c: In function 'seek_to_smaps_entry':
> mlock2-tests.c:158: warning: implicit declaration of function 'getline'
>
> According to the manpage of getline(), it needs _GNU_SOURCE before glibc
> 2.10.
>
> Signed-off-by: Geert Uytterhoeven <[email protected]>

Acked-by: Eric B Munson <[email protected]>

> ---
> tools/testing/selftests/vm/mlock2-tests.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/tools/testing/selftests/vm/mlock2-tests.c b/tools/testing/selftests/vm/mlock2-tests.c
> index 4431994aade2ef6f..cb247219f1f72889 100644
> --- a/tools/testing/selftests/vm/mlock2-tests.c
> +++ b/tools/testing/selftests/vm/mlock2-tests.c
> @@ -1,3 +1,4 @@
> +#define _GNU_SOURCE
> #include <sys/mman.h>
> #include <stdint.h>
> #include <stdio.h>
> --
> 1.9.1
>


Attachments:
(No filename) (872.00 B)
signature.asc (819.00 B)
Digital signature
Download all attachments

2015-11-09 15:50:44

by Eric B Munson

[permalink] [raw]
Subject: Re: [PATCH 2/2] selftests/mlock2: Add ULL prefix to 64-bit constants

On Mon, 09 Nov 2015, Geert Uytterhoeven wrote:

> On 32-bit (e.g. m68k):
>
> mlock2-tests.c: In function 'lock_check':
> mlock2-tests.c:293: warning: integer constant is too large for 'long' type
> mlock2-tests.c:294: warning: integer constant is too large for 'long' type
> mlock2-tests.c:299: warning: integer constant is too large for 'long' type
> mlock2-tests.c:300: warning: integer constant is too large for 'long' type
> mlock2-tests.c: In function 'unlock_lock_check':
> mlock2-tests.c:329: warning: integer constant is too large for 'long' type
> mlock2-tests.c:330: warning: integer constant is too large for 'long' type
> mlock2-tests.c: In function 'onfault_check':
> mlock2-tests.c:398: warning: integer constant is too large for 'long' type
> mlock2-tests.c:398: warning: integer constant is too large for 'long' type
> mlock2-tests.c:408: warning: integer constant is too large for 'long' type
> mlock2-tests.c:411: warning: integer constant is too large for 'long' type
> mlock2-tests.c:416: warning: integer constant is too large for 'long' type
> mlock2-tests.c: In function 'unlock_onfault_check':
> mlock2-tests.c:443: warning: integer constant is too large for 'long' type
> mlock2-tests.c: In function 'test_lock_onfault_of_present':
> mlock2-tests.c:528: warning: integer constant is too large for 'long' type
> mlock2-tests.c:529: warning: integer constant is too large for 'long' type
>
> Signed-off-by: Geert Uytterhoeven <[email protected]>

Acked-by: Eric B Munson <[email protected]>

> ---
> tools/testing/selftests/vm/mlock2-tests.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/vm/mlock2-tests.c b/tools/testing/selftests/vm/mlock2-tests.c
> index cb247219f1f72889..02ca5e0177c539c7 100644
> --- a/tools/testing/selftests/vm/mlock2-tests.c
> +++ b/tools/testing/selftests/vm/mlock2-tests.c
> @@ -277,8 +277,8 @@ out:
> return ret;
> }
>
> -#define PRESENT_BIT 0x8000000000000000
> -#define PFN_MASK 0x007FFFFFFFFFFFFF
> +#define PRESENT_BIT 0x8000000000000000ULL
> +#define PFN_MASK 0x007FFFFFFFFFFFFFULL
> #define UNEVICTABLE_BIT (1UL << 18)
>
> static int lock_check(char *map)
> --
> 1.9.1
>


Attachments:
(No filename) (2.17 kB)
signature.asc (819.00 B)
Digital signature
Download all attachments

2015-11-09 16:17:01

by Eric B Munson

[permalink] [raw]
Subject: Re: [PATCH 0/2] selftests/mlock2: Build warning fixes on Debian/m68k 4.0

On Mon, 09 Nov 2015, Eric B Munson wrote:

> On Mon, 09 Nov 2015, Geert Uytterhoeven wrote:
>
> > Hi,
> >
> > The following 2 patches are needed to fix build warnings on Debian/m68k
> > 4.0.
> >
> > However, after wiring up the mlock2 syscall, the test fails with:
> >
> > # ./mlock2-tests
> > fread kpageflags: Success
> > #
> >
> > as the fread() call returns 0, not 1.
>
> This would fail is the index into the kpageflags file is not being
> calculated properly. This tests works on x86_64 (I am in the process of
> testing x86 incase this is a 32bit issue). I am fairly sure that I
> tested it on x86, but it has been a while.

I can confirm that this test works on x86 as well as x86_64.
Unfortunately, I do not have access to m68k hardware to help debug this.

>
> >
> > The original commit description for the test said "Note that the limit
> > test needs to be run a normal user.". But running it as a non-root user
> > also fails:
>
> The original commit says that the on-fault-limit test needs to be run as
> a regular user becuase it relies on enforcing memory limits.
> mlock2-tests has to be run as root to get access to the various files
> under /proc it needs to verify things are working.
>
> >
> > $ ./mlock2-tests
> > fopen kpageflags: Permission denied
> > $ ls -l /proc/kpageflags
> > -r-------- 1 root root 0 Nov 9 11:05 /proc/kpageflags
> > $
> >
> > What am I missing?
> >
> > Thanks!
> >
> > Geert Uytterhoeven (2):
> > selftests/mlock2: Add missing #define _GNU_SOURCE
> > selftests/mlock2: Add ULL prefix to 64-bit constants
> >
> > tools/testing/selftests/vm/mlock2-tests.c | 5 +++--
> > 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > --
> > 1.9.1
> >
> > Gr{oetje,eeting}s,
> >
> > Geert
> >
> > --
> > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
> >
> > 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



Attachments:
(No filename) (2.02 kB)
signature.asc (819.00 B)
Digital signature
Download all attachments

2015-11-09 20:43:40

by Geert Uytterhoeven

[permalink] [raw]
Subject: Re: [PATCH 0/2] selftests/mlock2: Build warning fixes on Debian/m68k 4.0

Hi Eric,

[CC linux-arch for more architecture-specific breakage]

On Mon, Nov 9, 2015 at 4:48 PM, Eric B Munson <[email protected]> wrote:
> On Mon, 09 Nov 2015, Geert Uytterhoeven wrote:
>> The following 2 patches are needed to fix build warnings on Debian/m68k
>> 4.0.
>>
>> However, after wiring up the mlock2 syscall, the test fails with:
>>
>> # ./mlock2-tests
>> fread kpageflags: Success
>> #
>>
>> as the fread() call returns 0, not 1.
>
> This would fail is the index into the kpageflags file is not being
> calculated properly. This tests works on x86_64 (I am in the process of
> testing x86 incase this is a 32bit issue). I am fairly sure that I
> tested it on x86, but it has been a while.

Found it: /proc/kpageflags is always empty, as m68k doesn't set up max_pfn.

After fixing that, the test is working fine.
Funny how we managed to survive that long without setting it ;-)

Note that several other architectures also don't set max_pfn. Some may
be nommu, and are thus not affected, but others probably are:

hexagon
mn10300
nios2
score

And a few of the others (e.g. avr32, didn't check all of them) assign to a
local max_pfn variable instead of the global one, so it won't work on those
neither.

>> The original commit description for the test said "Note that the limit
>> test needs to be run a normal user.". But running it as a non-root user
>> also fails:
>
> The original commit says that the on-fault-limit test needs to be run as
> a regular user becuase it relies on enforcing memory limits.
> mlock2-tests has to be run as root to get access to the various files
> under /proc it needs to verify things are working.

Ah, I just used "git log -p" on mlock2-tests.c, and didn't notice the commit
actually added two tests.

Thanks!

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

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