2008-07-14 19:35:59

by Dimitri Gorokhovik

[permalink] [raw]
Subject: [PATCH] ide: it821x in pass-through mode segfaults in 2.6.26-stable

(Let me know if you need the kernel config for this.)
---
The driver of ITE8212 in pass-through mode (it8212.noraid=1 on cmndline)
attempts to use the field `.dma_host_set' of the struct ide_dma_ops in
`ide_config_drive_speed' which is set to NULL by default.

So give a value to all fields of the struct ide_dma_ops.

---
diff --git a/drivers/ide/pci/it821x.c b/drivers/ide/pci/it821x.c
index 6ab0411..cbf6472 100644
--- a/drivers/ide/pci/it821x.c
+++ b/drivers/ide/pci/it821x.c
@@ -512,8 +512,14 @@ static void __devinit it821x_quirkproc(ide_drive_t *drive)
}

static struct ide_dma_ops it821x_pass_through_dma_ops = {
+ .dma_host_set = ide_dma_host_set,
+ .dma_setup = ide_dma_setup,
+ .dma_exec_cmd = ide_dma_exec_cmd,
.dma_start = it821x_dma_start,
.dma_end = it821x_dma_end,
+ .dma_test_irq = ide_dma_test_irq,
+ .dma_timeout = ide_dma_timeout,
+ .dma_lost_irq = ide_dma_lost_irq,
};

/**


Subject: Re: [PATCH] ide: it821x in pass-through mode segfaults in 2.6.26-stable


Hi,

On Monday 14 July 2008, Dimitri Gorokhovik wrote:
> (Let me know if you need the kernel config for this.)
> ---
> The driver of ITE8212 in pass-through mode (it8212.noraid=1 on cmndline)
> attempts to use the field `.dma_host_set' of the struct ide_dma_ops in
> `ide_config_drive_speed' which is set to NULL by default.
>
> So give a value to all fields of the struct ide_dma_ops.

Thank your for fixing it.

Please resend with your Signed-off-by: so I could apply it.

> ---
> diff --git a/drivers/ide/pci/it821x.c b/drivers/ide/pci/it821x.c
> index 6ab0411..cbf6472 100644
> --- a/drivers/ide/pci/it821x.c
> +++ b/drivers/ide/pci/it821x.c
> @@ -512,8 +512,14 @@ static void __devinit it821x_quirkproc(ide_drive_t *drive)
> }
>
> static struct ide_dma_ops it821x_pass_through_dma_ops = {
> + .dma_host_set = ide_dma_host_set,
> + .dma_setup = ide_dma_setup,
> + .dma_exec_cmd = ide_dma_exec_cmd,
> .dma_start = it821x_dma_start,
> .dma_end = it821x_dma_end,
> + .dma_test_irq = ide_dma_test_irq,
> + .dma_timeout = ide_dma_timeout,
> + .dma_lost_irq = ide_dma_lost_irq,
> };
>
> /**