1
0
mirror of https://git.yoctoproject.org/poky synced 2026-07-16 15:57:04 +00:00

qemu: Refresh mmap fixes patch status/content

One mmap patch was merged upstream, the other is in progress but after
discussion has been amended and resent. Update the patches as such.

(From OE-Core rev: c68349a3334542e51f6c1c23f4f4342e4fce2b81)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2021-02-16 19:04:42 +00:00
parent 35fb71f38f
commit 2e4eaa5701
2 changed files with 21 additions and 7 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ avoid asserting binaries when reserved_va is set.
This meant a test case now gives the same behaviour regardless of whether This meant a test case now gives the same behaviour regardless of whether
reserved_va is set or not. reserved_va is set or not.
Upstream-Status: Pending Upstream-Status: Backport [https://github.com/qemu/qemu/commit/ccc5ccc17f8cfbfd87d9aede5d12a2d47c56e712]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org
Index: qemu-5.2.0/linux-user/mmap.c Index: qemu-5.2.0/linux-user/mmap.c
+20 -6
View File
@@ -6,21 +6,35 @@ if it only sees ENOMEM and only exits when it hits EFAULT.
According to the docs, trying to mremap outside the address space According to the docs, trying to mremap outside the address space
can/should return EFAULT and changing this allows the build to succeed. can/should return EFAULT and changing this allows the build to succeed.
Whether this should be fixed in qemu and/or musl, not sure.
Upstream-Status: Pending A better return value for the other cases of invalid addresses is EINVAL
rather than ENOMEM so adjust the other part of the test to this.
Upstream-Status: Submitted [https://lists.gnu.org/archive/html/qemu-devel/2021-01/msg01355.html]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org
Index: qemu-5.2.0/linux-user/mmap.c Index: qemu-5.2.0/linux-user/mmap.c
=================================================================== ===================================================================
--- qemu-5.2.0.orig/linux-user/mmap.c --- qemu-5.2.0.orig/linux-user/mmap.c
+++ qemu-5.2.0/linux-user/mmap.c +++ qemu-5.2.0/linux-user/mmap.c
@@ -727,7 +727,7 @@ abi_long target_mremap(abi_ulong old_add @@ -722,12 +722,14 @@ abi_long target_mremap(abi_ulong old_add
!guest_range_valid(new_addr, new_size)) || int prot;
((flags & MREMAP_MAYMOVE) == 0 && void *host_addr;
!guest_range_valid(old_addr, new_size))) {
- if (!guest_range_valid(old_addr, old_size) ||
- ((flags & MREMAP_FIXED) &&
- !guest_range_valid(new_addr, new_size)) ||
- ((flags & MREMAP_MAYMOVE) == 0 &&
- !guest_range_valid(old_addr, new_size))) {
- errno = ENOMEM; - errno = ENOMEM;
+ if (!guest_range_valid(old_addr, old_size)) {
+ errno = EFAULT; + errno = EFAULT;
+ return -1;
+ }
+
+ if (((flags & MREMAP_FIXED) && !guest_range_valid(new_addr, new_size)) ||
+ ((flags & MREMAP_MAYMOVE) == 0 && !guest_range_valid(old_addr, new_size))) {
+ errno = EINVAL;
return -1; return -1;
} }