OSDN Git Service

tun: do not block BH again in tun_flow_cleanup()
authorEric Dumazet <edumazet@google.com>
Fri, 20 Oct 2017 18:29:55 +0000 (11:29 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 22 Oct 2017 02:13:19 +0000 (03:13 +0100)
tun_flow_cleanup() being a timer callback, it is already
running in BH context.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c

index 3b41c36..f9541f7 100644 (file)
@@ -454,7 +454,7 @@ static void tun_flow_cleanup(unsigned long data)
 
        tun_debug(KERN_INFO, tun, "tun_flow_cleanup\n");
 
-       spin_lock_bh(&tun->lock);
+       spin_lock(&tun->lock);
        for (i = 0; i < TUN_NUM_FLOW_ENTRIES; i++) {
                struct tun_flow_entry *e;
                struct hlist_node *n;
@@ -472,7 +472,7 @@ static void tun_flow_cleanup(unsigned long data)
 
        if (count)
                mod_timer(&tun->flow_gc_timer, round_jiffies_up(next_timer));
-       spin_unlock_bh(&tun->lock);
+       spin_unlock(&tun->lock);
 }
 
 static void tun_flow_update(struct tun_struct *tun, u32 rxhash,