----- Original Message ----- > From: "Martijn van den Broek" <martijn.vd...@gmail.com> > To: qemu-devel@nongnu.org > Cc: chout...@adacore.com, pbonz...@redhat.com, ag...@suse.de > Sent: Tuesday, August 6, 2013 8:45:39 PM > Subject: [PATCH] Bugfix for loading multiboot kernels > > This patch fixes a bug in rom_copy introduced by > commit d60fa42e8bae39440f997ebfe8fe328269a57d16. > > rom_copy failed to load roms with a "datasize" of 0. > As a result, multiboot kernels were not loaded correctly > when they contain a segment with a "file size" of 0. > > https://bugs.launchpad.net/qemu/+bug/1208944 > > Signed-off-by: Martijn van den Broek <martijn.vd...@gmail.com> > --- > hw/core/loader.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/hw/core/loader.c b/hw/core/loader.c > index c3c28cf..6875b7e 100644 > --- a/hw/core/loader.c > +++ b/hw/core/loader.c > @@ -814,9 +814,6 @@ int rom_copy(uint8_t *dest, hwaddr addr, size_t size) > if (rom->addr > end) { > break; > } > - if (!rom->data) { > - continue; > - } > > d = dest + (rom->addr - addr); > s = rom->data; > @@ -826,7 +823,9 @@ int rom_copy(uint8_t *dest, hwaddr addr, size_t size) > l = dest - d; > } > > - memcpy(d, s, l); > + if (l > 0) { > + memcpy(d, s, l); > + } > > if (rom->romsize > rom->datasize) { > /* If datasize is less than romsize, it means that we didn't > -- > 1.8.1.msysgit.1 >
Reviewed-by: Paolo Bonzini <pbonz...@redhat.com> and marking the patch for 1.5 and 1.6: Cc: qemu-sta...@nongnu.org Paolo