Linux Test Project
 help / color / mirror / Atom feed
From: Andrea Cervesato via ltp <ltp@lists.linux.it>
To: "Petr Vorel" <pvorel@suse.cz>
Cc: Linux Test Project <ltp@lists.linux.it>
Subject: Re: [LTP] [PATCH 3/3] mmap24: add test for MAP_32BIT address limit
Date: Fri, 11 Sep 2026 15:16:18 +0000	[thread overview]
Message-ID: <6aa41b43.63ed6291.2b47ca.90d9@mx.google.com> (raw)
In-Reply-To: <20260911135907.GC1488703@pevik>

> Hi Andrea,
> 
> > Add a test verifying that mmap() with the MAP_32BIT flag restricts
> > mappings to the first 2GB of address space and fails with ENOMEM
> > when the 32-bit address space is exhausted without falling back to
> > higher addresses.
> 
> Thanks!
> 
> ...
> > +++ b/testcases/kernel/syscalls/mmap/mmap24.c
> ...
> > +
> > +		if ((unsigned long)addr + CHUNK_SZ > ADDR_LIMIT) {
> > +			tst_res(TFAIL, "mapping at %p + %zu exceeds 2GB limit",
> %zu is wrong on 32 bit.
> 
> ../../../../include/tst_test.h:75:55: warning: format ‘%zu’ expects argument of type ‘size_t’, but argument 6 has type ‘long unsigned int’ [-Wformat=]
>    75 |                 tst_res_(__FILE__, __LINE__, (ttype), (arg_fmt), ##__VA_ARGS__);\
>       |                                                       ^~~~~~~~~
> mmap24.c:63:25: note: in expansion of macro ‘tst_res’
>    63 |                         tst_res(TFAIL, "mapping at %p + %zu exceeds 2GB limit",
>       |                         ^~~~~~~

+1

> BTW I was wondering if I can get this failing when running on VM with really
> small RAM, but even with 249 MB I get get mapped 928 MB (or 960 MB when I run
> with -i):
> 
> mmap24.c:81: TPASS: Mapped 928 MB across 29 chunks within 2GB before ENOMEM
> 
> What am I missing?

Thanks for checking, I didn't verify 32-bits indeed..

I found the reason and it's really tricky. In arch/x86/kernel/sys_x86_64.c,
MAP_32BIT forces the mapping range to:

	begin = 0x40000000 (1 GB)
	end = 0x80000000 (2 GB)

Which is 1GB max.

And probably the reason why you can "map" 928 MB in a short memory system
is becasuee you are actually seeing virtual memory allocation. The test
is touching just 2 pages instead of all:

	((char *)addr)[0] = 'a';
	((char *)addr)[CHUNK_SZ - 1] = 'z';

can you try to apply a memset() for the whole allocation and see what
happens? The only problem if I use this method, tho, is that memory might
be swapped out.

I will send a new version with PROT_NONE that is allocating virtual
pages and changing a bit the logic of the final check.

--
Andrea Cervesato
SUSE QE Automation Engineer Linux
andrea.cervesato@suse.com

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

  reply	other threads:[~2026-09-11 15:16 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-28 15:36 [LTP] [PATCH 0/3] mmap testing suite to cover MAP_32BIT Andrea Cervesato
2026-08-28 15:36 ` [LTP] [PATCH 1/3] lapi/mmap: add MAP_32BIT fallback Andrea Cervesato
2026-08-28 21:10   ` [LTP] " linuxtestproject.agent
2026-08-31  8:02     ` Andrea Cervesato via ltp
2026-09-11 13:20   ` [LTP] [PATCH 1/3] " Petr Vorel
2026-09-11 13:26     ` Petr Vorel
2026-08-28 15:36 ` [LTP] [PATCH 2/3] mmap23: add test for MAP_32BIT oversized mapping Andrea Cervesato
2026-09-11 14:08   ` Petr Vorel
2026-08-28 15:36 ` [LTP] [PATCH 3/3] mmap24: add test for MAP_32BIT address limit Andrea Cervesato
2026-09-10 14:38   ` Cyril Hrubis
2026-09-11 13:59   ` Petr Vorel
2026-09-11 15:16     ` Andrea Cervesato via ltp [this message]
2026-09-11 16:03       ` Petr Vorel

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=6aa41b43.63ed6291.2b47ca.90d9@mx.google.com \
    --to=ltp@lists.linux.it \
    --cc=andrea.cervesato@suse.com \
    --cc=pvorel@suse.cz \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox