aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChas Williams <chas@cmf.nrl.navy.mil>2006-09-19 15:59:11 -0400
committerDavid S. Miller <davem@davemloft.net>2006-09-19 15:59:11 -0400
commit7f81dc0097095f19d25e14c043edfdebb9e01295 (patch)
treef3729d9ac9bf3c5ffcb7505eb41b4244cca67e50
parent79e453d49bd49ba1b576f89310cc565c9e4ca379 (diff)
[ATM]: [he] don't hold the device lock when upcalling
This can create a deadlock/lock ordering problem with other layers that want to use the transmit (or other) path of the card at that time. Signed-off-by: Chas Williams <chas@cmf.nrl.navy.mil> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/atm/he.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/atm/he.c b/drivers/atm/he.c
index dd96123a2b7f..ffcb9fd31c38 100644
--- a/drivers/atm/he.c
+++ b/drivers/atm/he.c
@@ -1928,7 +1928,9 @@ he_service_rbrq(struct he_dev *he_dev, int group)
1928#ifdef notdef 1928#ifdef notdef
1929 ATM_SKB(skb)->vcc = vcc; 1929 ATM_SKB(skb)->vcc = vcc;
1930#endif 1930#endif
1931 spin_unlock(&he_dev->global_lock);
1931 vcc->push(vcc, skb); 1932 vcc->push(vcc, skb);
1933 spin_lock(&he_dev->global_lock);
1932 1934
1933 atomic_inc(&vcc->stats->rx); 1935 atomic_inc(&vcc->stats->rx);
1934 1936