[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [Qemu-ppc] [PATCH for-2.5] mac_dbdma: always initialize cha
From: |
Programmingkid |
Subject: |
[Qemu-devel] [Qemu-ppc] [PATCH for-2.5] mac_dbdma: always initialize channel field in DBDMA_channel |
Date: |
Thu, 12 Nov 2015 23:09:49 -0500 |
On Nov 12, 2015, at 11:04 PM, address@hidden wrote:
> Message: 3
> Date: Thu, 12 Nov 2015 22:24:08 +0100
> From: Herv? Poussineau <address@hidden>
> To: address@hidden
> Cc: "open list:Old World" <address@hidden>, Herv? Poussineau
> <address@hidden>
> Subject: [Qemu-ppc] [PATCH for-2.5] mac_dbdma: always initialize
> channel field in DBDMA_channel
> Message-ID: <address@hidden>
> 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 <address@hidden>
> ---
> 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?
- [Qemu-devel] [Qemu-ppc] [PATCH for-2.5] mac_dbdma: always initialize channel field in DBDMA_channel,
Programmingkid <=