aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/icmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/icmp.c')
-rw-r--r--net/ipv4/icmp.c15
1 files changed, 1 insertions, 14 deletions
diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c
index 82baea026484..13d74598d3e4 100644
--- a/net/ipv4/icmp.c
+++ b/net/ipv4/icmp.c
@@ -603,7 +603,6 @@ static void icmp_unreach(struct sk_buff *skb)
603 struct icmphdr *icmph; 603 struct icmphdr *icmph;
604 int hash, protocol; 604 int hash, protocol;
605 struct net_protocol *ipprot; 605 struct net_protocol *ipprot;
606 struct sock *raw_sk;
607 u32 info = 0; 606 u32 info = 0;
608 607
609 /* 608 /*
@@ -697,21 +696,9 @@ static void icmp_unreach(struct sk_buff *skb)
697 /* 696 /*
698 * Deliver ICMP message to raw sockets. Pretty useless feature? 697 * Deliver ICMP message to raw sockets. Pretty useless feature?
699 */ 698 */
699 raw_icmp_error(skb, protocol, info);
700 700
701 /* Note: See raw.c and net/raw.h, RAWV4_HTABLE_SIZE==MAX_INET_PROTOS */
702 hash = protocol & (MAX_INET_PROTOS - 1); 701 hash = protocol & (MAX_INET_PROTOS - 1);
703 read_lock(&raw_v4_lock);
704 if ((raw_sk = sk_head(&raw_v4_htable[hash])) != NULL) {
705 while ((raw_sk = __raw_v4_lookup(raw_sk, protocol, iph->daddr,
706 iph->saddr,
707 skb->dev->ifindex)) != NULL) {
708 raw_err(raw_sk, skb, info);
709 raw_sk = sk_next(raw_sk);
710 iph = (struct iphdr *)skb->data;
711 }
712 }
713 read_unlock(&raw_v4_lock);
714
715 rcu_read_lock(); 702 rcu_read_lock();
716 ipprot = rcu_dereference(inet_protos[hash]); 703 ipprot = rcu_dereference(inet_protos[hash]);
717 if (ipprot && ipprot->err_handler) 704 if (ipprot && ipprot->err_handler)