qemu-devel
[Top][All Lists]
Advanced

[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?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]