• Stephen Warren's avatar
    ARM: tegra: Prevent requeuing in-progress DMA requests · 499ef7a5
    Stephen Warren authored
    If a request already in the queue is passed to tegra_dma_enqueue_req,
    tegra_dma_req.node->{next,prev} will end up pointing to itself instead
    of at tegra_dma_channel.list, which is the way a the end-of-list
    should be set up. When the DMA request completes and is list_del'd,
    the list head will still point at it, yet the node's next/prev will
    contain the list poison values. When the next DMA request completes,
    a kernel panic will occur when those poison values are dereferenced.
    
    This makes the DMA driver more robust in the face of buggy clients.
    Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
    Signed-off-by: default avatarColin Cross <ccross@android.com>
    499ef7a5
dma.c 20.2 KB