[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] Allow to register a callback with fw_cfg_add_ca
From: |
Gleb Natapov |
Subject: |
Re: [Qemu-devel] [PATCH] Allow to register a callback with fw_cfg_add_callback() |
Date: |
Thu, 11 Dec 2008 17:32:53 +0200 |
On Thu, Dec 11, 2008 at 04:09:28PM +0100, Laurent Vivier wrote:
> fw_cfg_add_callback() checks if key has FW_CFG_WRITE_CHANNEL bit set
> after masking the key with FW_CFG_ENTRY_MASK.
>
> But as FW_CFG_ENTRY_MASK is ~(FW_CFG_WRITE_CHANNEL | FW_CFG_ARCH_LOCAL),
> the bit is never set and function exits.
>
> This patch corrects this by checking the bit before masking the value.
>
> Signed-by-off: Laurent Vivier <address@hidden>
Acked-by: Gleb Natapov <address@hidden>
> ---
> hw/fw_cfg.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> Index: qemu/hw/fw_cfg.c
> ===================================================================
> --- qemu.orig/hw/fw_cfg.c 2008-12-11 15:55:15.000000000 +0100
> +++ qemu/hw/fw_cfg.c 2008-12-11 15:55:41.000000000 +0100
> @@ -240,10 +240,12 @@ int fw_cfg_add_callback(void *opaque, ui
> 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;
>
--
Gleb.