From: Chas Williams Date: Tue, 19 Sep 2006 19:59:11 +0000 (-0700) Subject: [ATM]: [he] don't hold the device lock when upcalling X-Git-Tag: v2.6.18~1^2~2 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f81dc0097095f19d25e14c043edfdebb9e01295;p=linux-2.6 [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 Signed-off-by: David S. Miller --- diff --git a/drivers/atm/he.c b/drivers/atm/he.c index dd96123a2b..ffcb9fd31c 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) #ifdef notdef ATM_SKB(skb)->vcc = vcc; #endif + spin_unlock(&he_dev->global_lock); vcc->push(vcc, skb); + spin_lock(&he_dev->global_lock); atomic_inc(&vcc->stats->rx);