patch-2.1.86 linux/net/ipv4/route.c

Next file: linux/net/ipv4/tcp.c
Previous file: linux/net/ipv4/raw.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.85/linux/net/ipv4/route.c linux/net/ipv4/route.c
@@ -500,6 +500,8 @@
 
 				if (!arp_bind_neighbour(&rt->u.dst) ||
 				    !(rt->u.dst.neighbour->nud_state&NUD_VALID)) {
+					if (rt->u.dst.neighbour)
+						neigh_event_send(rt->u.dst.neighbour, NULL);
 					ip_rt_put(rt);
 					rt_free(rt);
 					break;
@@ -599,7 +601,7 @@
 	switch (rt->u.dst.error) {
 	case EINVAL:
 	default:
-		kfree_skb(skb, FREE_READ);
+		kfree_skb(skb);
 		return 0;
 	case EHOSTUNREACH:
 		code = ICMP_HOST_UNREACH;
@@ -615,7 +617,7 @@
 		icmp_send(skb, ICMP_DEST_UNREACH, code, 0);
 		rt->last_error = jiffies;
 	}
-	kfree_skb(skb, FREE_READ);
+	kfree_skb(skb);
 	return 0;
 } 
 
@@ -701,7 +703,7 @@
 {
 	printk(KERN_DEBUG "ip_rt_bug: %08x -> %08x, %s\n", skb->nh.iph->saddr,
 	       skb->nh.iph->daddr, skb->dev ? skb->dev->name : "?");
-	kfree_skb(skb, FREE_WRITE);
+	kfree_skb(skb);
 	return 0;
 }
 
@@ -1415,7 +1417,7 @@
 				      rta->rta_oif ? *rta->rta_oif : 0);
 	}
 	if (err) {
-		kfree_skb(skb, FREE_WRITE);
+		kfree_skb(skb);
 		return err;
 	}
 
@@ -1478,7 +1480,7 @@
 
 nlmsg_failure:
 rtattr_failure:
-	kfree_skb(skb, FREE_WRITE);
+	kfree_skb(skb);
 	return -EMSGSIZE;
 }
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov