atm: Bad locking on br2684_devs modifications.
authorPavel Emelyanov <xemul@openvz.org>
Mon, 5 May 2008 01:00:36 +0000 (18:00 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 5 May 2008 01:00:36 +0000 (18:00 -0700)
The list_del happens under read-locked devs_lock.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/atm/br2684.c

index 3a74ff8..13858e2 100644 (file)
@@ -346,9 +346,9 @@ static void br2684_push(struct atm_vcc *atmvcc, struct sk_buff *skb)
                /* skb==NULL means VCC is being destroyed */
                br2684_close_vcc(brvcc);
                if (list_empty(&brdev->brvccs)) {
-                       read_lock(&devs_lock);
+                       write_lock_irq(&devs_lock);
                        list_del(&brdev->br2684_devs);
-                       read_unlock(&devs_lock);
+                       write_unlock_irq(&devs_lock);
                        unregister_netdev(net_dev);
                }
                return;