fib_rules: fix unresolved_rules counting
authorYan, Zheng <zheng.z.yan@intel.com>
Mon, 17 Oct 2011 15:20:28 +0000 (15:20 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 19 Oct 2011 23:17:41 +0000 (19:17 -0400)
we should decrease ops->unresolved_rules when deleting a unresolved rule.

Signed-off-by: Zheng Yan <zheng.z.yan@intel.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/fib_rules.c

index 3231b468bb7297ba2c278758f59d741976324556..27071ee2a4e1d1d22569bac55e1eee4411bac5bd 100644 (file)
@@ -475,8 +475,11 @@ static int fib_nl_delrule(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
 
                list_del_rcu(&rule->list);
 
-               if (rule->action == FR_ACT_GOTO)
+               if (rule->action == FR_ACT_GOTO) {
                        ops->nr_goto_rules--;
+                       if (rtnl_dereference(rule->ctarget) == NULL)
+                               ops->unresolved_rules--;
+               }
 
                /*
                 * Check if this rule is a target to any of them. If so,