From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52972) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bq7Qv-0006Me-No for qemu-devel@nongnu.org; Fri, 30 Sep 2016 19:41:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bq7Qp-0000my-P9 for qemu-devel@nongnu.org; Fri, 30 Sep 2016 19:41:36 -0400 Received: from mout02.posteo.de ([185.67.36.66]:46007) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bq7Qp-0000lo-Ic for qemu-devel@nongnu.org; Fri, 30 Sep 2016 19:41:31 -0400 Received: from submission (posteo.de [89.146.220.130]) by mout02.posteo.de (Postfix) with ESMTPS id 8F93E20AE7 for ; Sat, 1 Oct 2016 01:41:23 +0200 (CEST) Date: Fri, 30 Sep 2016 19:39:27 -0400 From: Felix Janda Message-ID: <20160930233927.GA5887@nyan> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Subject: [Qemu-devel] [PATCH] linux-user: use libc wrapper instead of direct mremap syscall List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Riku Voipio This commit essentially reverts commit 3af72a4d98dca033492102603734cbc63cd2694a, which has replaced five-argument calls to mremap() by direct mremap syscalls for compatibility with glibc older than version 2.4. The direct syscall was buggy for 64bit targets on 32bit hosts because of the default integer type promotions. Since glibc-2.4 is now a decade old, we can remove this workaround. Signed-off-by: Felix Janda --- linux-user/mmap.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/linux-user/mmap.c b/linux-user/mmap.c index c4371d9..ffd099d 100644 --- a/linux-user/mmap.c +++ b/linux-user/mmap.c @@ -17,8 +17,6 @@ * along with this program; if not, see . */ #include "qemu/osdep.h" -#include -#include #include "qemu.h" #include "qemu-common.h" @@ -681,10 +679,8 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size, mmap_lock(); if (flags & MREMAP_FIXED) { - host_addr = (void *) syscall(__NR_mremap, g2h(old_addr), - old_size, new_size, - flags, - g2h(new_addr)); + host_addr = mremap(g2h(old_addr), old_size, new_size, + flags, g2h(new_addr)); if (reserved_va && host_addr != MAP_FAILED) { /* If new and old addresses overlap then the above mremap will @@ -700,10 +696,8 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size, errno = ENOMEM; host_addr = MAP_FAILED; } else { - host_addr = (void *) syscall(__NR_mremap, g2h(old_addr), - old_size, new_size, - flags | MREMAP_FIXED, - g2h(mmap_start)); + host_addr = mremap(g2h(old_addr), old_size, new_size, + flags | MREMAP_FIXED, g2h(mmap_start)); if (reserved_va) { mmap_reserve(old_addr, old_size); } -- 2.7.3