aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/arp.c3
-rw-r--r--net/ipv4/ip_input.c3
-rw-r--r--net/ipv4/ipconfig.c6
3 files changed, 12 insertions, 0 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c
index 78dd3443016c..bde129708e22 100644
--- a/net/ipv4/arp.c
+++ b/net/ipv4/arp.c
@@ -932,6 +932,9 @@ static int arp_rcv(struct sk_buff *skb, struct net_device *dev,
932{ 932{
933 struct arphdr *arp; 933 struct arphdr *arp;
934 934
935 if (dev->nd_net != &init_net)
936 goto freeskb;
937
935 /* ARP header, plus 2 device addresses, plus 2 IP addresses. */ 938 /* ARP header, plus 2 device addresses, plus 2 IP addresses. */
936 if (!pskb_may_pull(skb, (sizeof(struct arphdr) + 939 if (!pskb_may_pull(skb, (sizeof(struct arphdr) +
937 (2 * dev->addr_len) + 940 (2 * dev->addr_len) +
diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c
index 97069399d864..41d8964591e7 100644
--- a/net/ipv4/ip_input.c
+++ b/net/ipv4/ip_input.c
@@ -382,6 +382,9 @@ int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt,
382 struct iphdr *iph; 382 struct iphdr *iph;
383 u32 len; 383 u32 len;
384 384
385 if (dev->nd_net != &init_net)
386 goto drop;
387
385 /* When the interface is in promisc. mode, drop all the crap 388 /* When the interface is in promisc. mode, drop all the crap
386 * that it receives, do not try to analyse it. 389 * that it receives, do not try to analyse it.
387 */ 390 */
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index 5ae4849878a3..08ff623371f0 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -426,6 +426,9 @@ ic_rarp_recv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt
426 unsigned char *sha, *tha; /* s for "source", t for "target" */ 426 unsigned char *sha, *tha; /* s for "source", t for "target" */
427 struct ic_device *d; 427 struct ic_device *d;
428 428
429 if (dev->nd_net != &init_net)
430 goto drop;
431
429 if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL) 432 if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
430 return NET_RX_DROP; 433 return NET_RX_DROP;
431 434
@@ -835,6 +838,9 @@ static int __init ic_bootp_recv(struct sk_buff *skb, struct net_device *dev, str
835 struct ic_device *d; 838 struct ic_device *d;
836 int len, ext_len; 839 int len, ext_len;
837 840
841 if (dev->nd_net != &init_net)
842 goto drop;
843
838 /* Perform verifications before taking the lock. */ 844 /* Perform verifications before taking the lock. */
839 if (skb->pkt_type == PACKET_OTHERHOST) 845 if (skb->pkt_type == PACKET_OTHERHOST)
840 goto drop; 846 goto drop;