From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41710) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aC7iz-0000AZ-0s for qemu-devel@nongnu.org; Thu, 24 Dec 2015 10:22:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aC7iv-0002Ts-Dk for qemu-devel@nongnu.org; Thu, 24 Dec 2015 10:22:40 -0500 Received: from smtpbg64.qq.com ([103.7.28.238]:42307) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aC7iu-0002TB-Iy for qemu-devel@nongnu.org; Thu, 24 Dec 2015 10:22:37 -0500 Message-ID: <567C0E6C.8060502@qq.com> Date: Thu, 24 Dec 2015 23:25:32 +0800 From: Chen Gang MIME-Version: 1.0 References: <1450919253-3237-1-git-send-email-chengang@emindsoft.com.cn> <567BC0C1.80907@vivier.eu> In-Reply-To: <567BC0C1.80907@vivier.eu> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH] linux-user/mmap.c: Use end instead of real_end in target_mmap List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Laurent Vivier , riku.voipio@iki.fi, Chen Gang Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org, rth@twiddle.net On 12/24/15 17:54, Laurent Vivier wrote: > > Le 24/12/2015 02:07, chengang@emindsoft.com.cn a écrit : >> From: Chen Gang >> >> In this case, real_end is larger than end, which may cause mmap_frag >> process the incorrect memory region. >> >> Signed-off-by: Chen Gang >> --- >> linux-user/mmap.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/linux-user/mmap.c b/linux-user/mmap.c >> index 7b459d5..57b0361 100644 >> --- a/linux-user/mmap.c >> +++ b/linux-user/mmap.c >> @@ -536,7 +536,7 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot, >> /* handle the end of the mapping */ >> if (end < real_end) { >> ret = mmap_frag(real_end - qemu_host_page_size, >> - real_end - qemu_host_page_size, real_end, >> + real_end - qemu_host_page_size, end, >> prot, flags, fd, >> offset + real_end - qemu_host_page_size - start); >> if (ret == -1) >> > > The fragment must effectively be mapped only to "end" not to "real_end" > (which is a host page aligned address, and thus this is not a fragment). > It is consistent with what it is done in the case of one single page. > > Reviewed-by: Laurent Vivier Thank you for your comments. I only met this issue, and knew it should be fixed in this way, but really don't know the related details. Thanks. -- Chen Gang Open, share, and attitude like air, water, and life which God blessed