projects/linux·commit de24125d

async_tx: fix the bug in async_tx_run_dependencies

de24125d · Yuri Tikhonov <[email protected]> · 2008-09-05 08:15:47 -07:00

Should clear the next pointer of the TX if we are sure that the
next TX (say NXT) will be submitted to the channel too. Overwise,
we break the chain of descriptors, because we lose the information
about the next descriptor to run. So next time, when invoke
async_tx_run_dependencies() with TX, it's TX->next will be NULL, and
NXT will be never submitted.

Cc: <[email protected]>		[2.6.26]
Signed-off-by: Yuri Tikhonov <[email protected]>
Signed-off-by: Ilya Yanok <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
Commit
de24125dd0a452bfd4502fc448e3534c5d2e87aa
Parents
b380b0d4

Changes

1 files changed · +2 −1

FileStatusAddDelContent
crypto/async_tx/async_tx.cmodified+2−1View file

crypto/async_tx/async_tx.c

View file
diff --git a/crypto/async_tx/async_tx.c b/crypto/async_tx/async_tx.c
index 85eaf7b..e8362c1 100644
--- a/crypto/async_tx/async_tx.c
+++ b/crypto/async_tx/async_tx.c
@@ -137,7 +137,8 @@ async_tx_run_dependencies(struct dma_async_tx_descriptor *tx)
spin_lock_bh(&next->lock);
next->parent = NULL;
_next = next->next;
- next->next = NULL;
+ if (_next && _next->chan == chan)
+ next->next = NULL;
spin_unlock_bh(&next->lock);
next->tx_submit(next);