Re: Panic on boot with today's CURRENT, ata related

From: Nate Lawson <nate_at_root.org>
Date: Fri, 06 Aug 2004 16:35:36 -0700
Søren Schmidt wrote:
> Nate Lawson wrote:
> 
>> I took a quick look at this ATA panic.  The exact same one occurs for 
>> Ceri.  A quick dissassemble shows that the testb is the check for the 
>> DMA flag at the very end of ata_generic_transaction().  The bug 
>> appears to be that this may be a PIO request (since the DMA check is 
>> outside the switch() statement).  The fix is to make sure it's a DMA 
>> request before dereferencing an element of the DMA struct.  Try the 
>> attached patch.
> 
> No, the fix is to make sure there is a valid ch->dma pointer, the below 
> is the correct fix.
> 
> --- ata-lowlevel.c      5 Aug 2004 21:13:41 -0000       1.41
> +++ ata-lowlevel.c      6 Aug 2004 22:31:16 -0000
> _at__at_ -295,7 +295,7 _at__at_
>      }
> 
>      /* request finish here */
> -    if (ch->dma->flags & ATA_DMA_LOADED)
> +    if (ch->dma && ch->dma->flags & ATA_DMA_LOADED)
>         ch->dma->unload(ch);
>      return ATA_OP_FINISHED;
>  }

Thanks.  Under what circumstances is a request generated with ATA_R_DMA 
set in the flags but where the channel's dma struct has not been allocated?

-Nate
Received on Fri Aug 06 2004 - 21:35:45 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:05 UTC