From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Vivier Subject: [PATCH 1/3] Correct fw_cfg_add_callback() Date: Tue, 16 Dec 2008 16:20:08 +0100 Message-ID: <1229440810-12394-2-git-send-email-Laurent.Vivier@bull.net> References: <1229440810-12394-1-git-send-email-Laurent.Vivier@bull.net> Cc: qemu developers , bochs developers , Laurent Vivier To: kvm developers Return-path: Received: from ecfrec.frec.bull.fr ([129.183.4.8]:58469 "EHLO ecfrec.frec.bull.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753988AbYLPPUg (ORCPT ); Tue, 16 Dec 2008 10:20:36 -0500 In-Reply-To: <1229440810-12394-1-git-send-email-Laurent.Vivier@bull.net> Sender: kvm-owner@vger.kernel.org List-ID: This patch is needed to be able to register firmware configuration device callback. It is already included in qemu as commit r5978. Signed-off-by: Laurent Vivier --- qemu/hw/fw_cfg.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/qemu/hw/fw_cfg.c b/qemu/hw/fw_cfg.c index 4e68670..c3b09c6 100644 --- a/qemu/hw/fw_cfg.c +++ b/qemu/hw/fw_cfg.c @@ -57,7 +57,6 @@ static void fw_cfg_write(FWCfgState *s, uint8_t value) FWCfgEntry *e = &s->entries[arch][s->cur_entry & FW_CFG_ENTRY_MASK]; FW_CFG_DPRINTF("write %d\n", value); - if (s->cur_entry & FW_CFG_WRITE_CHANNEL && s->cur_offset < e->len) { e->data[s->cur_offset++] = value; if (s->cur_offset == e->len) { @@ -240,10 +239,12 @@ int fw_cfg_add_callback(void *opaque, uint16_t key, FWCfgCallback callback, FWCfgState *s = opaque; int arch = !!(key & FW_CFG_ARCH_LOCAL); + if (!(key & FW_CFG_WRITE_CHANNEL)) + return 0; + key &= FW_CFG_ENTRY_MASK; - if (key >= FW_CFG_MAX_ENTRY || !(key & FW_CFG_WRITE_CHANNEL) - || len > 65535) + if (key >= FW_CFG_MAX_ENTRY || len > 65535) return 0; s->entries[arch][key].data = data; -- 1.5.6.5 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LCbiw-0005qk-3Z for qemu-devel@nongnu.org; Tue, 16 Dec 2008 10:20:38 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LCbiu-0005pH-O6 for qemu-devel@nongnu.org; Tue, 16 Dec 2008 10:20:36 -0500 Received: from [199.232.76.173] (port=57492 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LCbiu-0005oy-1U for qemu-devel@nongnu.org; Tue, 16 Dec 2008 10:20:36 -0500 Received: from ecfrec.frec.bull.fr ([129.183.4.8]:58468) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LCbit-0002YE-Ku for qemu-devel@nongnu.org; Tue, 16 Dec 2008 10:20:35 -0500 From: Laurent Vivier Date: Tue, 16 Dec 2008 16:20:08 +0100 Message-Id: <1229440810-12394-2-git-send-email-Laurent.Vivier@bull.net> In-Reply-To: <1229440810-12394-1-git-send-email-Laurent.Vivier@bull.net> References: <1229440810-12394-1-git-send-email-Laurent.Vivier@bull.net> Subject: [Qemu-devel] [PATCH 1/3] Correct fw_cfg_add_callback() Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: kvm developers Cc: bochs developers , qemu developers , Laurent Vivier This patch is needed to be able to register firmware configuration device callback. It is already included in qemu as commit r5978. Signed-off-by: Laurent Vivier --- qemu/hw/fw_cfg.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/qemu/hw/fw_cfg.c b/qemu/hw/fw_cfg.c index 4e68670..c3b09c6 100644 --- a/qemu/hw/fw_cfg.c +++ b/qemu/hw/fw_cfg.c @@ -57,7 +57,6 @@ static void fw_cfg_write(FWCfgState *s, uint8_t value) FWCfgEntry *e = &s->entries[arch][s->cur_entry & FW_CFG_ENTRY_MASK]; FW_CFG_DPRINTF("write %d\n", value); - if (s->cur_entry & FW_CFG_WRITE_CHANNEL && s->cur_offset < e->len) { e->data[s->cur_offset++] = value; if (s->cur_offset == e->len) { @@ -240,10 +239,12 @@ int fw_cfg_add_callback(void *opaque, uint16_t key, FWCfgCallback callback, FWCfgState *s = opaque; int arch = !!(key & FW_CFG_ARCH_LOCAL); + if (!(key & FW_CFG_WRITE_CHANNEL)) + return 0; + key &= FW_CFG_ENTRY_MASK; - if (key >= FW_CFG_MAX_ENTRY || !(key & FW_CFG_WRITE_CHANNEL) - || len > 65535) + if (key >= FW_CFG_MAX_ENTRY || len > 65535) return 0; s->entries[arch][key].data = data; -- 1.5.6.5