git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
davinci-cpdma: fix locking issue in cpdma_chan_stop
[pandora-kernel.git]
/
drivers
/
net
/
ethernet
/
ti
/
davinci_cpdma.c
diff --git
a/drivers/net/ethernet/ti/davinci_cpdma.c
b/drivers/net/ethernet/ti/davinci_cpdma.c
index
dca9d33
..
c97d2f5
100644
(file)
--- a/
drivers/net/ethernet/ti/davinci_cpdma.c
+++ b/
drivers/net/ethernet/ti/davinci_cpdma.c
@@
-836,11
+836,13
@@
int cpdma_chan_stop(struct cpdma_chan *chan)
chan_write(chan, cp, CPDMA_TEARDOWN_VALUE);
/* handle completed packets */
chan_write(chan, cp, CPDMA_TEARDOWN_VALUE);
/* handle completed packets */
+ spin_unlock_irqrestore(&chan->lock, flags);
do {
ret = __cpdma_chan_process(chan);
if (ret < 0)
break;
} while ((ret & CPDMA_DESC_TD_COMPLETE) == 0);
do {
ret = __cpdma_chan_process(chan);
if (ret < 0)
break;
} while ((ret & CPDMA_DESC_TD_COMPLETE) == 0);
+ spin_lock_irqsave(&chan->lock, flags);
/* remaining packets haven't been tx/rx'ed, clean them up */
while (chan->head) {
/* remaining packets haven't been tx/rx'ed, clean them up */
while (chan->head) {