From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48985) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XtCoG-0006E3-4J for qemu-devel@nongnu.org; Tue, 25 Nov 2014 04:53:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XtCo9-0004zM-MB for qemu-devel@nongnu.org; Tue, 25 Nov 2014 04:53:24 -0500 Received: from mail-wg0-x22d.google.com ([2a00:1450:400c:c00::22d]:52001) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XtCo9-0004zA-F4 for qemu-devel@nongnu.org; Tue, 25 Nov 2014 04:53:17 -0500 Received: by mail-wg0-f45.google.com with SMTP id b13so354508wgh.4 for ; Tue, 25 Nov 2014 01:53:16 -0800 (PST) Sender: Paolo Bonzini Message-ID: <54745188.6000901@redhat.com> Date: Tue, 25 Nov 2014 10:53:12 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1416890299-10208-1-git-send-email-arei.gonglei@huawei.com> In-Reply-To: <1416890299-10208-1-git-send-email-arei.gonglei@huawei.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH for-2.2] fw_cfg: fix boot order bug when dynamically modified via QOM List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: arei.gonglei@huawei.com, qemu-devel@nongnu.org Cc: peter.huangpeng@huawei.com, Gerd Hoffmann On 25/11/2014 05:38, arei.gonglei@huawei.com wrote: > From: Gonglei > > When we dynamically modify boot order, the length of > boot order will be changed, but we don't update > s->files->f[i].size with new length. This casuse > seabios read a wrong vale of qemu cfg file about > bootorder. > > Cc: Gerd Hoffmann > Cc: Paolo Bonzini > Signed-off-by: Gonglei > --- > hw/nvram/fw_cfg.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c > index e7ed27e..a7122ee 100644 > --- a/hw/nvram/fw_cfg.c > +++ b/hw/nvram/fw_cfg.c > @@ -523,6 +523,7 @@ void *fw_cfg_modify_file(FWCfgState *s, const char *filename, > void *data, size_t len) > { > int i, index; > + void *ptr = NULL; > > assert(s->files); > > @@ -531,8 +532,10 @@ void *fw_cfg_modify_file(FWCfgState *s, const char *filename, > > for (i = 0; i < index; i++) { > if (strcmp(filename, s->files->f[i].name) == 0) { > - return fw_cfg_modify_bytes_read(s, FW_CFG_FILE_FIRST + i, > - data, len); > + ptr = fw_cfg_modify_bytes_read(s, FW_CFG_FILE_FIRST + i, > + data, len); > + s->files->f[i].size = cpu_to_be32(len); > + return ptr; > } > } > /* add new one */ > Applied, thanks. Paolo