OSDN Git Service

dmaengine: tegra-apb: Prevent race conditions of tasklet vs free list
authorDmitry Osipenko <digetx@gmail.com>
Sun, 9 Feb 2020 16:33:39 +0000 (19:33 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 11 Mar 2020 13:15:04 +0000 (14:15 +0100)
commit3c71a99799a6e20629c44a14a0b6aab213e122c6
treea8fae60825808661527a5af1c4f856b4c1ac715e
parentb0c95d336123de55faf3528c97718a4e7607b54c
dmaengine: tegra-apb: Prevent race conditions of tasklet vs free list

commit c33ee1301c393a241d6424e36eff1071811b1064 upstream.

The interrupt handler puts a half-completed DMA descriptor on a free list
and then schedules tasklet to process bottom half of the descriptor that
executes client's callback, this creates possibility to pick up the busy
descriptor from the free list. Thus, let's disallow descriptor's re-use
until it is fully processed.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20200209163356.6439-3-digetx@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/dma/tegra20-apb-dma.c