• Shunyong Yang's avatar
    dmaengine: qcom_hidma: initialize tx flags in hidma_prep_dma_* · 875aac8a
    Shunyong Yang authored
    In async_tx_test_ack(), it uses flags in struct dma_async_tx_descriptor
    to check the ACK status. As hidma reuses the descriptor in a free list
    when hidma_prep_dma_*(memcpy/memset) is called, the flag will keep ACKed
    if the descriptor has been used before. This will cause a BUG_ON in
    async_tx_quiesce().
    
      kernel BUG at crypto/async_tx/async_tx.c:282!
      Internal error: Oops - BUG: 0 1 SMP
      ...
      task: ffff8017dd3ec000 task.stack: ffff8017dd3e8000
      PC is at async_tx_quiesce+0x54/0x78 [async_tx]
      LR is at async_trigger_callback+0x98/0x110 [async_tx]
    
    This patch initializes flags in dma_async_tx_descriptor by the flags
    passed from the caller when hidma_prep_dma_*(memcpy/memset) is called.
    
    Cc: Joey Zheng <yu.zheng@hxt-semitech.com>
    Reviewed-by: default avatarSinan Kaya <okaya@kernel.org>
    Signed-off-by: default avatarShunyong Yang <shunyong.yang@hxt-semitech.com>
    Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
    875aac8a
hidma.c 25.3 KB