On Nov 12, 2015, at 11:04 PM, qemu-ppc-requ...@nongnu.org wrote: > Message: 3 > Date: Thu, 12 Nov 2015 22:24:08 +0100 > From: Herv? Poussineau <hpous...@reactos.org> > To: qemu-devel@nongnu.org > Cc: "open list:Old World" <qemu-...@nongnu.org>, Herv? Poussineau > <hpous...@reactos.org> > Subject: [Qemu-ppc] [PATCH for-2.5] mac_dbdma: always initialize > channel field in DBDMA_channel > Message-ID: <1447363448-20405-1-git-send-email-hpous...@reactos.org> > Content-Type: text/plain; charset=UTF-8 > > dbdma_from_ch() uses channel field to return the right DBDMA object. > Previous code was working if guest OS was only using registered DMA channels. > However, it lead to QEMU crashes if guest OS was using unregistered DMA > channels. > > Signed-off-by: Herv? Poussineau <hpous...@reactos.org> > --- > hw/misc/macio/mac_dbdma.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c > index 779683c..5ee8f02 100644 > --- a/hw/misc/macio/mac_dbdma.c > +++ b/hw/misc/macio/mac_dbdma.c > @@ -557,7 +557,6 @@ void DBDMA_register_channel(void *dbdma, int nchan, > qemu_irq irq, > DBDMA_DPRINTF("DBDMA_register_channel 0x%x\n", nchan); > > ch->irq = irq; > - ch->channel = nchan; > ch->rw = rw; > ch->flush = flush; > ch->io.opaque = opaque; > @@ -753,6 +752,7 @@ void* DBDMA_init (MemoryRegion **dbdma_mem) > for (i = 0; i < DBDMA_CHANNELS; i++) { > DBDMA_io *io = &s->channels[i].io; > qemu_iovec_init(&io->iov, 1); > + s->channels[i].channel = i; > } > > memory_region_init_io(&s->mem, NULL, &dbdma_ops, s, "dbdma", 0x1000); > -- > 2.1.4
What operating system(s) did you use to test this patch out?