]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[NET_SCHED]: Fix ingress locking
authorPatrick McHardy <kaber@trash.net>
Wed, 28 Mar 2007 19:58:20 +0000 (21:58 +0200)
committerAdrian Bunk <bunk@stusta.de>
Wed, 28 Mar 2007 19:58:20 +0000 (21:58 +0200)
Ingress queueing uses a seperate lock for serializing enqueue operations,
but fails to properly protect itself against concurrent changes to the
qdisc tree. Use queue_lock for now since the real fix it quite intrusive.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Adrian Bunk <bunk@stusta.de>
net/core/dev.c

index caa8cbb0e0ffce8f9585e0c5fcf2d9d4cfeeb4e4..23cdd8b0575137cb5535a5aef2fe42f840493411 100644 (file)
@@ -1566,10 +1566,10 @@ static int ing_filter(struct sk_buff *skb)
 
                skb->tc_verd = SET_TC_AT(skb->tc_verd,AT_INGRESS);
 
-               spin_lock(&dev->ingress_lock);
+               spin_lock(&dev->queue_lock);
                if ((q = dev->qdisc_ingress) != NULL)
                        result = q->enqueue(skb, q);
-               spin_unlock(&dev->ingress_lock);
+               spin_unlock(&dev->queue_lock);
 
        }