From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:45956) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RQKYZ-0003Xv-Nb for qemu-devel@nongnu.org; Tue, 15 Nov 2011 10:04:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RQKYT-0007C2-Q4 for qemu-devel@nongnu.org; Tue, 15 Nov 2011 10:04:15 -0500 Received: from mail-yw0-f45.google.com ([209.85.213.45]:57534) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RQKYT-0007By-MH for qemu-devel@nongnu.org; Tue, 15 Nov 2011 10:04:09 -0500 Received: by ywa17 with SMTP id 17so4340313ywa.4 for ; Tue, 15 Nov 2011 07:04:08 -0800 (PST) Message-ID: <4EC27F65.4010304@codemonkey.ws> Date: Tue, 15 Nov 2011 09:04:05 -0600 From: Anthony Liguori MIME-Version: 1.0 References: <1320672345-5776-1-git-send-email-peter.maydell@linaro.org> In-Reply-To: <1320672345-5776-1-git-send-email-peter.maydell@linaro.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] hw/omap_gpio: Fix infinite recursion when doing 8/16 bit reads List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: qemu-devel@nongnu.org, patches@linaro.org On 11/07/2011 07:25 AM, Peter Maydell wrote: > Fix a long-standing bug which meant that any attempt to do an > 8 or 16 bit read from the OMAP GPIO module would cause qemu to > crash due to an infinite recursion. > > Signed-off-by: Peter Maydell Applied. Thanks. Regards, Anthony Liguori > --- > This has actually been in the code since the original OMAP2 support > was added in 2008; we've never noticed before because the kernel happened > to always do 32 bit accesses... > Long term we should fix this by conversion to MemoryRegion; this is > the minimally invasive fix for 1.0. > > hw/omap_gpio.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/hw/omap_gpio.c b/hw/omap_gpio.c > index d775df6..d630748 100644 > --- a/hw/omap_gpio.c > +++ b/hw/omap_gpio.c > @@ -510,7 +510,7 @@ static void omap2_gpio_module_write(void *opaque, target_phys_addr_t addr, > > static uint32_t omap2_gpio_module_readp(void *opaque, target_phys_addr_t addr) > { > - return omap2_gpio_module_readp(opaque, addr)>> ((addr& 3)<< 3); > + return omap2_gpio_module_read(opaque, addr& ~3)>> ((addr& 3)<< 3); > } > > static void omap2_gpio_module_writep(void *opaque, target_phys_addr_t addr,