Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid
[linux-2.6-block.git] / net / ipv4 / route.c
index 8ca3642f0d9bccb80c06ec9d2a01dd28120b2bfa..a5da63e5faa2d8118d3044a5a79b5e51bf61cafc 100644 (file)
@@ -1303,6 +1303,10 @@ static void ip_del_fnhe(struct fib_nh *nh, __be32 daddr)
                if (fnhe->fnhe_daddr == daddr) {
                        rcu_assign_pointer(*fnhe_p, rcu_dereference_protected(
                                fnhe->fnhe_next, lockdep_is_held(&fnhe_lock)));
+                       /* set fnhe_daddr to 0 to ensure it won't bind with
+                        * new dsts in rt_bind_exception().
+                        */
+                       fnhe->fnhe_daddr = 0;
                        fnhe_flush_routes(fnhe);
                        kfree_rcu(fnhe, rcu);
                        break;