diff mbox series

qemu/osdep: Remove fallback for MAP_FIXED_NOREPLACE

Message ID 20230808164418.69989-1-richard.henderson@linaro.org
State New
Headers show
Series qemu/osdep: Remove fallback for MAP_FIXED_NOREPLACE | expand

Commit Message

Richard Henderson Aug. 8, 2023, 4:44 p.m. UTC
In order for our emulation of MAP_FIXED_NOREPLACE to succeed within
linux-user target_mmap, we require a non-zero value.  This does not
require host kernel support, merely the bit being defined.

MAP_FIXED_NOREPLACE was added with glibc 2.28.  From repology.org:

                  Fedora 36: 2.35
          CentOS 8 (RHEL-8): 2.28
                  Debian 11: 2.31
         OpenSUSE Leap 15.4: 2.31
           Ubuntu LTS 20.04: 2.31

Reported-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/qemu/osdep.h | 3 ---
 linux-user/elfload.c | 1 -
 2 files changed, 4 deletions(-)

Comments

Alex Bennée Aug. 8, 2023, 10:16 p.m. UTC | #1
Richard Henderson <richard.henderson@linaro.org> writes:

> In order for our emulation of MAP_FIXED_NOREPLACE to succeed within
> linux-user target_mmap, we require a non-zero value.  This does not
> require host kernel support, merely the bit being defined.
>
> MAP_FIXED_NOREPLACE was added with glibc 2.28.  From repology.org:
>
>                   Fedora 36: 2.35
>           CentOS 8 (RHEL-8): 2.28
>                   Debian 11: 2.31
>          OpenSUSE Leap 15.4: 2.31
>            Ubuntu LTS 20.04: 2.31
>
> Reported-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Akihiko Odaki Aug. 9, 2023, 3:43 a.m. UTC | #2
On 2023/08/09 1:44, Richard Henderson wrote:
> In order for our emulation of MAP_FIXED_NOREPLACE to succeed within
> linux-user target_mmap, we require a non-zero value.  This does not
> require host kernel support, merely the bit being defined.
> 
> MAP_FIXED_NOREPLACE was added with glibc 2.28.  From repology.org:
> 
>                    Fedora 36: 2.35
>            CentOS 8 (RHEL-8): 2.28
>                    Debian 11: 2.31
>           OpenSUSE Leap 15.4: 2.31
>             Ubuntu LTS 20.04: 2.31
> 
> Reported-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Michael Tokarev Aug. 9, 2023, 3:50 a.m. UTC | #3
08.08.2023 19:44, Richard Henderson пишет:
> In order for our emulation of MAP_FIXED_NOREPLACE to succeed within
> linux-user target_mmap, we require a non-zero value.  This does not
> require host kernel support, merely the bit being defined.

Hm. Should we add something like

  assert(MAP_FIXED_NOREPLACE != 0)

somewhere?

/mjt
Richard Henderson Aug. 9, 2023, 3:51 a.m. UTC | #4
On 8/8/23 20:50, Michael Tokarev wrote:
> 08.08.2023 19:44, Richard Henderson пишет:
>> In order for our emulation of MAP_FIXED_NOREPLACE to succeed within
>> linux-user target_mmap, we require a non-zero value.  This does not
>> require host kernel support, merely the bit being defined.
> 
> Hm. Should we add something like
> 
>   assert(MAP_FIXED_NOREPLACE != 0)
> 
> somewhere?

I wouldn't think so.  Where would a zero come from?


r~
diff mbox series

Patch

diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index cc61b00ba9..21ef8f1699 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -289,9 +289,6 @@  void QEMU_ERROR("code path is reachable")
 #ifndef MAP_ANONYMOUS
 #define MAP_ANONYMOUS MAP_ANON
 #endif
-#ifndef MAP_FIXED_NOREPLACE
-#define MAP_FIXED_NOREPLACE 0
-#endif
 #ifndef MAP_NORESERVE
 #define MAP_NORESERVE 0
 #endif
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index 36e4026f05..9d9c79a653 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -2807,7 +2807,6 @@  static void pgb_reserved_va(const char *image_name, abi_ulong guest_loaddr,
     /* Widen the "image" to the entire reserved address space. */
     pgb_static(image_name, 0, reserved_va, align);
 
-    /* osdep.h defines this as 0 if it's missing */
     flags |= MAP_FIXED_NOREPLACE;
 
     /* Reserve the memory on the host. */