On Wed, Nov 13, 2013 at 12:20:37PM +0200, Horia Geanta wrote: > Commit 3e721aeb3df3816e283ab18e327cd4652972e213 > ("crypto: talitos - handle descriptor not found in error path") > tried to address the fact that CDPR (Current Descriptor Pointer Register) > is unreliable. > > As it turns out, there are still issues in the function detecting the > offending descriptor: > -only 32 bits of the descriptor address are read, however the address is > 36-bit - since reset_channel() initializes channels with EAE (extended > address) bit set > -reading CDPR can return zero in cur_desc; when searching the channel > fifo for this address, cur_desc == dma_desc (= 0) case might happen, > leading to an oops when trying to return desc->hdr (desc is zero) > -read channel's .tail only once; the tail is a moving target; use a > local variable for the end of search condition > > Signed-off-by: Lei Xu <Lei.Xu@xxxxxxxxxxxxx> > Signed-off-by: Horia Geanta <horia.geanta@xxxxxxxxxxxxx> > Tested-by: Kalyani Chowdhury <Kalyani.Chowdhury@xxxxxxxxxxxxx> Patch applied. -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html