pkt_sched: Grab correct lock in notify_and_destroy().
authorJarek Poplawski <jarkao2@gmail.com>
Mon, 18 Aug 2008 05:02:11 +0000 (22:02 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 Aug 2008 05:02:11 +0000 (22:02 -0700)
From: Jarek Poplawski <jarkao2@gmail.com>

When we are destroying non-root qdiscs, we need to lock
the root of the qdisc tree not the the qdisc itself.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_api.c

index c25465e5607aeb32cf39fb8c784514a64ebedcbf..c8dc72e12107a8ac1d2aefd498c84a12ad3e3dec 100644 (file)
@@ -638,9 +638,9 @@ static void notify_and_destroy(struct sk_buff *skb, struct nlmsghdr *n, u32 clid
                qdisc_notify(skb, n, clid, old, new);
 
        if (old) {
-               spin_lock_bh(&old->q.lock);
+               sch_tree_lock(old);
                qdisc_destroy(old);
-               spin_unlock_bh(&old->q.lock);
+               sch_tree_unlock(old);
        }
 }