All of lore.kernel.org
 help / color / mirror / Atom feed
From: Warner Losh <imp@bsdimp.com>
To: qemu-devel@nongnu.org
Cc: Kyle Evans <kevans@FreeBSD.org>, Warner Losh <imp@bsdimp.com>
Subject: [PATCH 8/9] bsd-user: Implement MAP_EXCL, required by jemalloc in head
Date: Thu, 16 Sep 2021 20:56:34 -0600	[thread overview]
Message-ID: <20210917025635.32011-9-imp@bsdimp.com> (raw)
In-Reply-To: <20210917025635.32011-1-imp@bsdimp.com>

From: Kyle Evans <kevans@FreeBSD.org>

jemalloc requires a working MAP_EXCL. Emulate it by ensuring we don't
double map anything.

Signed-off-by: Kyle Evans <kevans@FreeBSD.org>
Signed-off-by: Warner Losh <imp@bsdimp.com>
---
 bsd-user/mmap.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/bsd-user/mmap.c b/bsd-user/mmap.c
index 347d314aa9..792ff00548 100644
--- a/bsd-user/mmap.c
+++ b/bsd-user/mmap.c
@@ -387,7 +387,7 @@ abi_ulong mmap_find_vma(abi_ulong start, abi_ulong size)
 abi_long target_mmap(abi_ulong start, abi_ulong len, int prot,
                      int flags, int fd, off_t offset)
 {
-    abi_ulong ret, end, real_start, real_end, retaddr, host_offset, host_len;
+    abi_ulong addr, ret, end, real_start, real_end, retaddr, host_offset, host_len;
 
     mmap_lock();
 #ifdef DEBUG_MMAP
@@ -599,6 +599,14 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot,
             goto the_end;
         }
 
+        /* Reject the mapping if any page within the range is mapped */
+        if (flags & MAP_EXCL) {
+            for (addr = start; addr < end; addr++) {
+                if (page_get_flags(addr) != 0)
+                    goto fail;
+            }
+        }
+
         /* handle the start of the mapping */
         if (start > real_start) {
             if (real_end == real_start + qemu_host_page_size) {
-- 
2.32.0



  parent reply	other threads:[~2021-09-17  3:03 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-17  2:56 [PATCH 0/9] bsd-user mmap fixes Warner Losh
2021-09-17  2:56 ` [PATCH 1/9] bsd-user: Apply e6deac9cf99 from linux-user (zero anonymous memory) Warner Losh
2021-09-17 15:02   ` Philippe Mathieu-Daudé
2021-09-17 15:10     ` Warner Losh
2021-09-17  2:56 ` [PATCH 2/9] bsd-user: Apply fb7e378cf9c from linux-user (fix FORTIFY warnings) Warner Losh
2021-09-17  2:56 ` [PATCH 3/9] bsd-user: MAP_ symbols are defined, so no need for ifdefs Warner Losh
2021-09-17 15:03   ` Philippe Mathieu-Daudé
2021-09-17  2:56 ` [PATCH 4/9] bsd-user: mmap return ENOMEM on overflow Warner Losh
2021-09-17  2:56 ` [PATCH 5/9] bsd-user: mmap prefer MAP_ANON for BSD Warner Losh
2021-09-17 15:04   ` Philippe Mathieu-Daudé
2021-09-17  2:56 ` [PATCH 6/9] bsd-user: mmap line wrap change Warner Losh
2021-09-17  2:56 ` [PATCH 7/9] bsd-user: Don't try to mmap fd when it is -1 independently from MAP_ANONYMOUS flag Warner Losh
2021-09-17  2:58   ` Warner Losh
2021-09-17  2:56 ` Warner Losh [this message]
2021-09-17  2:56 ` [PATCH 9/9] bsd-user: Apply 86abac06c14 from linux-user (target_mprotect can't fail) Warner Losh

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=20210917025635.32011-9-imp@bsdimp.com \
    --to=imp@bsdimp.com \
    --cc=kevans@FreeBSD.org \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.