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
next prev 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.