From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:49901) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RPn4a-0002nq-2p for qemu-devel@nongnu.org; Sun, 13 Nov 2011 22:19:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RPn4X-0008OI-B0 for qemu-devel@nongnu.org; Sun, 13 Nov 2011 22:19:04 -0500 From: David Gibson Date: Mon, 14 Nov 2011 14:18:58 +1100 Message-Id: <1321240741-23055-3-git-send-email-david@gibson.dropbear.id.au> In-Reply-To: <1321240741-23055-1-git-send-email-david@gibson.dropbear.id.au> References: <1321240741-23055-1-git-send-email-david@gibson.dropbear.id.au> Subject: [Qemu-devel] [PATCH 2/5] pseries: Fix buggy spapr_vio_find_by_reg() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: agraf@suse.de Cc: michael@ellerman.id.au, qemu-ppc@nongnu.org, qemu-devel@nongnu.org The spapr_vio_find_by_reg() function in hw/spapr_vio.c is supposed to find the device structure for a PAPR virtual IO device with the given reg value, and return NULL if none exists. It does the first ok, but if no device with that reg exists, it just returns the last device traversed in the list. This patch fixes it. Signed-off-by: David Gibson --- hw/spapr_vio.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/spapr_vio.c b/hw/spapr_vio.c index 25cfc9d..b7b3ddd 100644 --- a/hw/spapr_vio.c +++ b/hw/spapr_vio.c @@ -66,11 +66,11 @@ VIOsPAPRDevice *spapr_vio_find_by_reg(VIOsPAPRBus *bus, uint32_t reg) QTAILQ_FOREACH(qdev, &bus->bus.children, sibling) { dev = (VIOsPAPRDevice *)qdev; if (dev->reg == reg) { - break; + return dev; } } - return dev; + return NULL; } #ifdef CONFIG_FDT -- 1.7.7.1