On Wed, 24 Oct 2012 10:28:42 +0100 Phillip Wood <phillip.wood@xxxxxxxxxxxx> wrote: > On 10/23/2012 11:17 AM, Borislav Petkov wrote: > > --- > > diff --git a/drivers/ata/pata_acpi.c b/drivers/ata/pata_acpi.c > > index 09723b76beac..80d594d6e7c8 100644 > > --- a/drivers/ata/pata_acpi.c > > +++ b/drivers/ata/pata_acpi.c > > @@ -144,6 +144,13 @@ static void pacpi_set_dmamode(struct ata_port *ap, struct ata_device *adev) > > > > /* Now stuff the nS values into the structure */ > > t = ata_timing_find_mode(adev->dma_mode); > > + if (!t) { > > + pr_err("%s: ata_timing_find_mode gives NULL; adev->dma_mode: 0x%x\n", > > + __func__, adev->dma_mode); > > + > > + return; > > + } > > + > > if (adev->dma_mode >= XFER_UDMA_0) { > > acpi->gtm.drive[unit].dma = t->udma; > > acpi->gtm.flags |= (1 << (2 * unit)); > > -- > > pacpi_set_dmamode: ata_timing_find_mode gives NULL; adev->dma_mode: 0x0 Which is an ATA layer bug - adev->dma_mode should never be called without a DMA mode in normal use. > as well here if I build pata_acpi as a module, if I build it into the > kernel I don't get any message. If you build the drivers into the kernel the link order ensures the generic drivers execute last so the native driver will already have been used. When loading modules it is expected that the distribution is smart enough to get this right. So the built in case is covering up the failure case because the code never gets executed, Alan -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html