diff options
Diffstat (limited to 'net/ipv4')
| -rw-r--r-- | net/ipv4/fib_rules.c | 1 | ||||
| -rw-r--r-- | net/ipv4/fib_trie.c | 1 | ||||
| -rw-r--r-- | net/ipv4/inet_timewait_sock.c | 1 | ||||
| -rw-r--r-- | net/ipv4/ipconfig.c | 1 | ||||
| -rw-r--r-- | net/ipv4/ipmr.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/ipt_CLUSTERIP.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/ipt_ULOG.c | 4 | ||||
| -rw-r--r-- | net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/nf_nat_proto_common.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/nf_nat_proto_icmp.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/nf_nat_proto_sctp.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/nf_nat_proto_tcp.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/nf_nat_proto_udp.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/nf_nat_proto_udplite.c | 1 | ||||
| -rw-r--r-- | net/ipv4/netfilter/nf_nat_snmp_basic.c | 22 | ||||
| -rw-r--r-- | net/ipv4/ping.c | 1 | ||||
| -rw-r--r-- | net/ipv4/proc.c | 1 | ||||
| -rw-r--r-- | net/ipv4/raw.c | 1 | ||||
| -rw-r--r-- | net/ipv4/syncookies.c | 1 | ||||
| -rw-r--r-- | net/ipv4/tcp_ipv4.c | 23 | ||||
| -rw-r--r-- | net/ipv4/udp.c | 30 | ||||
| -rw-r--r-- | net/ipv4/udplite.c | 14 | ||||
| -rw-r--r-- | net/ipv4/xfrm4_state.c | 1 |
24 files changed, 62 insertions, 50 deletions
diff --git a/net/ipv4/fib_rules.c b/net/ipv4/fib_rules.c index a53bb1b5b118..46339ba7a2d3 100644 --- a/net/ipv4/fib_rules.c +++ b/net/ipv4/fib_rules.c | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #include <linux/init.h> | 26 | #include <linux/init.h> |
| 27 | #include <linux/list.h> | 27 | #include <linux/list.h> |
| 28 | #include <linux/rcupdate.h> | 28 | #include <linux/rcupdate.h> |
| 29 | #include <linux/export.h> | ||
| 29 | #include <net/ip.h> | 30 | #include <net/ip.h> |
| 30 | #include <net/route.h> | 31 | #include <net/route.h> |
| 31 | #include <net/tcp.h> | 32 | #include <net/tcp.h> |
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index 89d6f71a6a99..37b671185c81 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
| @@ -73,6 +73,7 @@ | |||
| 73 | #include <linux/list.h> | 73 | #include <linux/list.h> |
| 74 | #include <linux/slab.h> | 74 | #include <linux/slab.h> |
| 75 | #include <linux/prefetch.h> | 75 | #include <linux/prefetch.h> |
| 76 | #include <linux/export.h> | ||
| 76 | #include <net/net_namespace.h> | 77 | #include <net/net_namespace.h> |
| 77 | #include <net/ip.h> | 78 | #include <net/ip.h> |
| 78 | #include <net/protocol.h> | 79 | #include <net/protocol.h> |
diff --git a/net/ipv4/inet_timewait_sock.c b/net/ipv4/inet_timewait_sock.c index 44d65d546e30..89168c6351ff 100644 --- a/net/ipv4/inet_timewait_sock.c +++ b/net/ipv4/inet_timewait_sock.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
| 12 | #include <linux/kmemcheck.h> | 12 | #include <linux/kmemcheck.h> |
| 13 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
| 14 | #include <linux/module.h> | ||
| 14 | #include <net/inet_hashtables.h> | 15 | #include <net/inet_hashtables.h> |
| 15 | #include <net/inet_timewait_sock.h> | 16 | #include <net/inet_timewait_sock.h> |
| 16 | #include <net/ip.h> | 17 | #include <net/ip.h> |
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c index 472a8c4f1dc0..0da2afc97f32 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c | |||
| @@ -54,6 +54,7 @@ | |||
| 54 | #include <linux/delay.h> | 54 | #include <linux/delay.h> |
| 55 | #include <linux/nfs_fs.h> | 55 | #include <linux/nfs_fs.h> |
| 56 | #include <linux/slab.h> | 56 | #include <linux/slab.h> |
| 57 | #include <linux/export.h> | ||
| 57 | #include <net/net_namespace.h> | 58 | #include <net/net_namespace.h> |
| 58 | #include <net/arp.h> | 59 | #include <net/arp.h> |
| 59 | #include <net/ip.h> | 60 | #include <net/ip.h> |
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index 6164e982e0ef..76a7f07b38b6 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c | |||
| @@ -61,6 +61,7 @@ | |||
| 61 | #include <linux/if_arp.h> | 61 | #include <linux/if_arp.h> |
| 62 | #include <linux/netfilter_ipv4.h> | 62 | #include <linux/netfilter_ipv4.h> |
| 63 | #include <linux/compat.h> | 63 | #include <linux/compat.h> |
| 64 | #include <linux/export.h> | ||
| 64 | #include <net/ipip.h> | 65 | #include <net/ipip.h> |
| 65 | #include <net/checksum.h> | 66 | #include <net/checksum.h> |
| 66 | #include <net/netlink.h> | 67 | #include <net/netlink.h> |
diff --git a/net/ipv4/netfilter.c b/net/ipv4/netfilter.c index 929b27bdeb79..9899619ab9b8 100644 --- a/net/ipv4/netfilter.c +++ b/net/ipv4/netfilter.c | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include <linux/ip.h> | 5 | #include <linux/ip.h> |
| 6 | #include <linux/skbuff.h> | 6 | #include <linux/skbuff.h> |
| 7 | #include <linux/gfp.h> | 7 | #include <linux/gfp.h> |
| 8 | #include <linux/export.h> | ||
| 8 | #include <net/route.h> | 9 | #include <net/route.h> |
| 9 | #include <net/xfrm.h> | 10 | #include <net/xfrm.h> |
| 10 | #include <net/ip.h> | 11 | #include <net/ip.h> |
diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c index db8d22db425f..a639967eb727 100644 --- a/net/ipv4/netfilter/ipt_CLUSTERIP.c +++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c | |||
| @@ -395,7 +395,6 @@ static int clusterip_tg_check(const struct xt_tgchk_param *par) | |||
| 395 | config = clusterip_config_init(cipinfo, | 395 | config = clusterip_config_init(cipinfo, |
| 396 | e->ip.dst.s_addr, dev); | 396 | e->ip.dst.s_addr, dev); |
| 397 | if (!config) { | 397 | if (!config) { |
| 398 | pr_info("cannot allocate config\n"); | ||
| 399 | dev_put(dev); | 398 | dev_put(dev); |
| 400 | return -ENOMEM; | 399 | return -ENOMEM; |
| 401 | } | 400 | } |
diff --git a/net/ipv4/netfilter/ipt_ULOG.c b/net/ipv4/netfilter/ipt_ULOG.c index 446e0f467a17..b5508151e547 100644 --- a/net/ipv4/netfilter/ipt_ULOG.c +++ b/net/ipv4/netfilter/ipt_ULOG.c | |||
| @@ -135,10 +135,8 @@ static struct sk_buff *ulog_alloc_skb(unsigned int size) | |||
| 135 | * due to slab allocator restrictions */ | 135 | * due to slab allocator restrictions */ |
| 136 | 136 | ||
| 137 | n = max(size, nlbufsiz); | 137 | n = max(size, nlbufsiz); |
| 138 | skb = alloc_skb(n, GFP_ATOMIC); | 138 | skb = alloc_skb(n, GFP_ATOMIC | __GFP_NOWARN); |
| 139 | if (!skb) { | 139 | if (!skb) { |
| 140 | pr_debug("cannot alloc whole buffer %ub!\n", n); | ||
| 141 | |||
| 142 | if (n > size) { | 140 | if (n > size) { |
| 143 | /* try to allocate only as much as we need for | 141 | /* try to allocate only as much as we need for |
| 144 | * current packet */ | 142 | * current packet */ |
diff --git a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c index 5585980fce2e..9682b36df38c 100644 --- a/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c +++ b/net/ipv4/netfilter/nf_conntrack_l3proto_ipv4_compat.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <net/netfilter/nf_conntrack_expect.h> | 21 | #include <net/netfilter/nf_conntrack_expect.h> |
| 22 | #include <net/netfilter/nf_conntrack_acct.h> | 22 | #include <net/netfilter/nf_conntrack_acct.h> |
| 23 | #include <linux/rculist_nulls.h> | 23 | #include <linux/rculist_nulls.h> |
| 24 | #include <linux/export.h> | ||
| 24 | 25 | ||
| 25 | struct ct_iter_state { | 26 | struct ct_iter_state { |
| 26 | struct seq_net_private p; | 27 | struct seq_net_private p; |
diff --git a/net/ipv4/netfilter/nf_nat_proto_common.c b/net/ipv4/netfilter/nf_nat_proto_common.c index f52d41ea0690..a3d997618602 100644 --- a/net/ipv4/netfilter/nf_nat_proto_common.c +++ b/net/ipv4/netfilter/nf_nat_proto_common.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include <linux/ip.h> | 12 | #include <linux/ip.h> |
| 13 | 13 | ||
| 14 | #include <linux/netfilter.h> | 14 | #include <linux/netfilter.h> |
| 15 | #include <linux/export.h> | ||
| 15 | #include <net/secure_seq.h> | 16 | #include <net/secure_seq.h> |
| 16 | #include <net/netfilter/nf_nat.h> | 17 | #include <net/netfilter/nf_nat.h> |
| 17 | #include <net/netfilter/nf_nat_core.h> | 18 | #include <net/netfilter/nf_nat_core.h> |
diff --git a/net/ipv4/netfilter/nf_nat_proto_icmp.c b/net/ipv4/netfilter/nf_nat_proto_icmp.c index 5744c3ec847c..9f4dc1235dc7 100644 --- a/net/ipv4/netfilter/nf_nat_proto_icmp.c +++ b/net/ipv4/netfilter/nf_nat_proto_icmp.c | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | #include <linux/types.h> | 9 | #include <linux/types.h> |
| 10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
| 11 | #include <linux/export.h> | ||
| 11 | #include <linux/ip.h> | 12 | #include <linux/ip.h> |
| 12 | #include <linux/icmp.h> | 13 | #include <linux/icmp.h> |
| 13 | 14 | ||
diff --git a/net/ipv4/netfilter/nf_nat_proto_sctp.c b/net/ipv4/netfilter/nf_nat_proto_sctp.c index 756331d42661..bd5a80a62a5b 100644 --- a/net/ipv4/netfilter/nf_nat_proto_sctp.c +++ b/net/ipv4/netfilter/nf_nat_proto_sctp.c | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
| 11 | #include <linux/ip.h> | 11 | #include <linux/ip.h> |
| 12 | #include <linux/sctp.h> | 12 | #include <linux/sctp.h> |
| 13 | #include <linux/module.h> | ||
| 13 | #include <net/sctp/checksum.h> | 14 | #include <net/sctp/checksum.h> |
| 14 | 15 | ||
| 15 | #include <net/netfilter/nf_nat_protocol.h> | 16 | #include <net/netfilter/nf_nat_protocol.h> |
diff --git a/net/ipv4/netfilter/nf_nat_proto_tcp.c b/net/ipv4/netfilter/nf_nat_proto_tcp.c index aa460a595d5d..0d67bb80130f 100644 --- a/net/ipv4/netfilter/nf_nat_proto_tcp.c +++ b/net/ipv4/netfilter/nf_nat_proto_tcp.c | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | #include <linux/types.h> | 9 | #include <linux/types.h> |
| 10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
| 11 | #include <linux/export.h> | ||
| 11 | #include <linux/ip.h> | 12 | #include <linux/ip.h> |
| 12 | #include <linux/tcp.h> | 13 | #include <linux/tcp.h> |
| 13 | 14 | ||
diff --git a/net/ipv4/netfilter/nf_nat_proto_udp.c b/net/ipv4/netfilter/nf_nat_proto_udp.c index dfe65c7e2925..0b1b8601cba7 100644 --- a/net/ipv4/netfilter/nf_nat_proto_udp.c +++ b/net/ipv4/netfilter/nf_nat_proto_udp.c | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | #include <linux/types.h> | 9 | #include <linux/types.h> |
| 10 | #include <linux/export.h> | ||
| 10 | #include <linux/init.h> | 11 | #include <linux/init.h> |
| 11 | #include <linux/ip.h> | 12 | #include <linux/ip.h> |
| 12 | #include <linux/udp.h> | 13 | #include <linux/udp.h> |
diff --git a/net/ipv4/netfilter/nf_nat_proto_udplite.c b/net/ipv4/netfilter/nf_nat_proto_udplite.c index 3cc8c8af39ef..f83ef23e2ab7 100644 --- a/net/ipv4/netfilter/nf_nat_proto_udplite.c +++ b/net/ipv4/netfilter/nf_nat_proto_udplite.c | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | #include <linux/udp.h> | 13 | #include <linux/udp.h> |
| 14 | 14 | ||
| 15 | #include <linux/netfilter.h> | 15 | #include <linux/netfilter.h> |
| 16 | #include <linux/module.h> | ||
| 16 | #include <net/netfilter/nf_nat.h> | 17 | #include <net/netfilter/nf_nat.h> |
| 17 | #include <net/netfilter/nf_nat_protocol.h> | 18 | #include <net/netfilter/nf_nat_protocol.h> |
| 18 | 19 | ||
diff --git a/net/ipv4/netfilter/nf_nat_snmp_basic.c b/net/ipv4/netfilter/nf_nat_snmp_basic.c index d1cb412c18e0..2133c30a4a5f 100644 --- a/net/ipv4/netfilter/nf_nat_snmp_basic.c +++ b/net/ipv4/netfilter/nf_nat_snmp_basic.c | |||
| @@ -400,11 +400,8 @@ static unsigned char asn1_octets_decode(struct asn1_ctx *ctx, | |||
| 400 | *len = 0; | 400 | *len = 0; |
| 401 | 401 | ||
| 402 | *octets = kmalloc(eoc - ctx->pointer, GFP_ATOMIC); | 402 | *octets = kmalloc(eoc - ctx->pointer, GFP_ATOMIC); |
| 403 | if (*octets == NULL) { | 403 | if (*octets == NULL) |
| 404 | if (net_ratelimit()) | ||
| 405 | pr_notice("OOM in bsalg (%d)\n", __LINE__); | ||
| 406 | return 0; | 404 | return 0; |
| 407 | } | ||
| 408 | 405 | ||
| 409 | ptr = *octets; | 406 | ptr = *octets; |
| 410 | while (ctx->pointer < eoc) { | 407 | while (ctx->pointer < eoc) { |
| @@ -451,11 +448,8 @@ static unsigned char asn1_oid_decode(struct asn1_ctx *ctx, | |||
| 451 | return 0; | 448 | return 0; |
| 452 | 449 | ||
| 453 | *oid = kmalloc(size * sizeof(unsigned long), GFP_ATOMIC); | 450 | *oid = kmalloc(size * sizeof(unsigned long), GFP_ATOMIC); |
| 454 | if (*oid == NULL) { | 451 | if (*oid == NULL) |
| 455 | if (net_ratelimit()) | ||
| 456 | pr_notice("OOM in bsalg (%d)\n", __LINE__); | ||
| 457 | return 0; | 452 | return 0; |
| 458 | } | ||
| 459 | 453 | ||
| 460 | optr = *oid; | 454 | optr = *oid; |
| 461 | 455 | ||
| @@ -728,8 +722,6 @@ static unsigned char snmp_object_decode(struct asn1_ctx *ctx, | |||
| 728 | *obj = kmalloc(sizeof(struct snmp_object) + len, GFP_ATOMIC); | 722 | *obj = kmalloc(sizeof(struct snmp_object) + len, GFP_ATOMIC); |
| 729 | if (*obj == NULL) { | 723 | if (*obj == NULL) { |
| 730 | kfree(id); | 724 | kfree(id); |
| 731 | if (net_ratelimit()) | ||
| 732 | pr_notice("OOM in bsalg (%d)\n", __LINE__); | ||
| 733 | return 0; | 725 | return 0; |
| 734 | } | 726 | } |
| 735 | (*obj)->syntax.l[0] = l; | 727 | (*obj)->syntax.l[0] = l; |
| @@ -744,8 +736,6 @@ static unsigned char snmp_object_decode(struct asn1_ctx *ctx, | |||
| 744 | if (*obj == NULL) { | 736 | if (*obj == NULL) { |
| 745 | kfree(p); | 737 | kfree(p); |
| 746 | kfree(id); | 738 | kfree(id); |
| 747 | if (net_ratelimit()) | ||
| 748 | pr_notice("OOM in bsalg (%d)\n", __LINE__); | ||
| 749 | return 0; | 739 | return 0; |
| 750 | } | 740 | } |
| 751 | memcpy((*obj)->syntax.c, p, len); | 741 | memcpy((*obj)->syntax.c, p, len); |
| @@ -759,8 +749,6 @@ static unsigned char snmp_object_decode(struct asn1_ctx *ctx, | |||
| 759 | *obj = kmalloc(sizeof(struct snmp_object), GFP_ATOMIC); | 749 | *obj = kmalloc(sizeof(struct snmp_object), GFP_ATOMIC); |
| 760 | if (*obj == NULL) { | 750 | if (*obj == NULL) { |
| 761 | kfree(id); | 751 | kfree(id); |
| 762 | if (net_ratelimit()) | ||
| 763 | pr_notice("OOM in bsalg (%d)\n", __LINE__); | ||
| 764 | return 0; | 752 | return 0; |
| 765 | } | 753 | } |
| 766 | if (!asn1_null_decode(ctx, end)) { | 754 | if (!asn1_null_decode(ctx, end)) { |
| @@ -780,8 +768,6 @@ static unsigned char snmp_object_decode(struct asn1_ctx *ctx, | |||
| 780 | if (*obj == NULL) { | 768 | if (*obj == NULL) { |
| 781 | kfree(lp); | 769 | kfree(lp); |
| 782 | kfree(id); | 770 | kfree(id); |
| 783 | if (net_ratelimit()) | ||
| 784 | pr_notice("OOM in bsalg (%d)\n", __LINE__); | ||
| 785 | return 0; | 771 | return 0; |
| 786 | } | 772 | } |
| 787 | memcpy((*obj)->syntax.ul, lp, len); | 773 | memcpy((*obj)->syntax.ul, lp, len); |
| @@ -801,8 +787,6 @@ static unsigned char snmp_object_decode(struct asn1_ctx *ctx, | |||
| 801 | if (*obj == NULL) { | 787 | if (*obj == NULL) { |
| 802 | kfree(p); | 788 | kfree(p); |
| 803 | kfree(id); | 789 | kfree(id); |
| 804 | if (net_ratelimit()) | ||
| 805 | pr_notice("OOM in bsalg (%d)\n", __LINE__); | ||
| 806 | return 0; | 790 | return 0; |
| 807 | } | 791 | } |
| 808 | memcpy((*obj)->syntax.uc, p, len); | 792 | memcpy((*obj)->syntax.uc, p, len); |
| @@ -819,8 +803,6 @@ static unsigned char snmp_object_decode(struct asn1_ctx *ctx, | |||
| 819 | *obj = kmalloc(sizeof(struct snmp_object) + len, GFP_ATOMIC); | 803 | *obj = kmalloc(sizeof(struct snmp_object) + len, GFP_ATOMIC); |
| 820 | if (*obj == NULL) { | 804 | if (*obj == NULL) { |
| 821 | kfree(id); | 805 | kfree(id); |
| 822 | if (net_ratelimit()) | ||
| 823 | pr_notice("OOM in bsalg (%d)\n", __LINE__); | ||
| 824 | return 0; | 806 | return 0; |
| 825 | } | 807 | } |
| 826 | (*obj)->syntax.ul[0] = ul; | 808 | (*obj)->syntax.ul[0] = ul; |
diff --git a/net/ipv4/ping.c b/net/ipv4/ping.c index 39b403f854c6..a06f73fdb3c0 100644 --- a/net/ipv4/ping.c +++ b/net/ipv4/ping.c | |||
| @@ -39,6 +39,7 @@ | |||
| 39 | #include <net/protocol.h> | 39 | #include <net/protocol.h> |
| 40 | #include <linux/skbuff.h> | 40 | #include <linux/skbuff.h> |
| 41 | #include <linux/proc_fs.h> | 41 | #include <linux/proc_fs.h> |
| 42 | #include <linux/export.h> | ||
| 42 | #include <net/sock.h> | 43 | #include <net/sock.h> |
| 43 | #include <net/ping.h> | 44 | #include <net/ping.h> |
| 44 | #include <net/udp.h> | 45 | #include <net/udp.h> |
diff --git a/net/ipv4/proc.c b/net/ipv4/proc.c index 4bfad5da94f4..466ea8bb7a4d 100644 --- a/net/ipv4/proc.c +++ b/net/ipv4/proc.c | |||
| @@ -42,6 +42,7 @@ | |||
| 42 | #include <linux/inetdevice.h> | 42 | #include <linux/inetdevice.h> |
| 43 | #include <linux/proc_fs.h> | 43 | #include <linux/proc_fs.h> |
| 44 | #include <linux/seq_file.h> | 44 | #include <linux/seq_file.h> |
| 45 | #include <linux/export.h> | ||
| 45 | #include <net/sock.h> | 46 | #include <net/sock.h> |
| 46 | #include <net/raw.h> | 47 | #include <net/raw.h> |
| 47 | 48 | ||
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index 61714bd52925..007e2eb769d3 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c | |||
| @@ -48,6 +48,7 @@ | |||
| 48 | #include <linux/errno.h> | 48 | #include <linux/errno.h> |
| 49 | #include <linux/aio.h> | 49 | #include <linux/aio.h> |
| 50 | #include <linux/kernel.h> | 50 | #include <linux/kernel.h> |
| 51 | #include <linux/export.h> | ||
| 51 | #include <linux/spinlock.h> | 52 | #include <linux/spinlock.h> |
| 52 | #include <linux/sockios.h> | 53 | #include <linux/sockios.h> |
| 53 | #include <linux/socket.h> | 54 | #include <linux/socket.h> |
diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c index d7b89b12f6d8..90f6544c13e2 100644 --- a/net/ipv4/syncookies.c +++ b/net/ipv4/syncookies.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <linux/random.h> | 15 | #include <linux/random.h> |
| 16 | #include <linux/cryptohash.h> | 16 | #include <linux/cryptohash.h> |
| 17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
| 18 | #include <linux/export.h> | ||
| 18 | #include <net/tcp.h> | 19 | #include <net/tcp.h> |
| 19 | #include <net/route.h> | 20 | #include <net/route.h> |
| 20 | 21 | ||
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 0ea10eefa60f..a7443159c400 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
| @@ -1510,6 +1510,7 @@ exit: | |||
| 1510 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); | 1510 | NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); |
| 1511 | return NULL; | 1511 | return NULL; |
| 1512 | put_and_exit: | 1512 | put_and_exit: |
| 1513 | bh_unlock_sock(newsk); | ||
| 1513 | sock_put(newsk); | 1514 | sock_put(newsk); |
| 1514 | goto exit; | 1515 | goto exit; |
| 1515 | } | 1516 | } |
| @@ -2339,7 +2340,7 @@ static void tcp_seq_stop(struct seq_file *seq, void *v) | |||
| 2339 | } | 2340 | } |
| 2340 | } | 2341 | } |
| 2341 | 2342 | ||
| 2342 | static int tcp_seq_open(struct inode *inode, struct file *file) | 2343 | int tcp_seq_open(struct inode *inode, struct file *file) |
| 2343 | { | 2344 | { |
| 2344 | struct tcp_seq_afinfo *afinfo = PDE(inode)->data; | 2345 | struct tcp_seq_afinfo *afinfo = PDE(inode)->data; |
| 2345 | struct tcp_iter_state *s; | 2346 | struct tcp_iter_state *s; |
| @@ -2355,23 +2356,19 @@ static int tcp_seq_open(struct inode *inode, struct file *file) | |||
| 2355 | s->last_pos = 0; | 2356 | s->last_pos = 0; |
| 2356 | return 0; | 2357 | return 0; |
| 2357 | } | 2358 | } |
| 2359 | EXPORT_SYMBOL(tcp_seq_open); | ||
| 2358 | 2360 | ||
| 2359 | int tcp_proc_register(struct net *net, struct tcp_seq_afinfo *afinfo) | 2361 | int tcp_proc_register(struct net *net, struct tcp_seq_afinfo *afinfo) |
| 2360 | { | 2362 | { |
| 2361 | int rc = 0; | 2363 | int rc = 0; |
| 2362 | struct proc_dir_entry *p; | 2364 | struct proc_dir_entry *p; |
| 2363 | 2365 | ||
| 2364 | afinfo->seq_fops.open = tcp_seq_open; | ||
| 2365 | afinfo->seq_fops.read = seq_read; | ||
| 2366 | afinfo->seq_fops.llseek = seq_lseek; | ||
| 2367 | afinfo->seq_fops.release = seq_release_net; | ||
| 2368 | |||
| 2369 | afinfo->seq_ops.start = tcp_seq_start; | 2366 | afinfo->seq_ops.start = tcp_seq_start; |
| 2370 | afinfo->seq_ops.next = tcp_seq_next; | 2367 | afinfo->seq_ops.next = tcp_seq_next; |
| 2371 | afinfo->seq_ops.stop = tcp_seq_stop; | 2368 | afinfo->seq_ops.stop = tcp_seq_stop; |
| 2372 | 2369 | ||
| 2373 | p = proc_create_data(afinfo->name, S_IRUGO, net->proc_net, | 2370 | p = proc_create_data(afinfo->name, S_IRUGO, net->proc_net, |
| 2374 | &afinfo->seq_fops, afinfo); | 2371 | afinfo->seq_fops, afinfo); |
| 2375 | if (!p) | 2372 | if (!p) |
| 2376 | rc = -ENOMEM; | 2373 | rc = -ENOMEM; |
| 2377 | return rc; | 2374 | return rc; |
| @@ -2520,12 +2517,18 @@ out: | |||
| 2520 | return 0; | 2517 | return 0; |
| 2521 | } | 2518 | } |
| 2522 | 2519 | ||
| 2520 | static const struct file_operations tcp_afinfo_seq_fops = { | ||
| 2521 | .owner = THIS_MODULE, | ||
| 2522 | .open = tcp_seq_open, | ||
| 2523 | .read = seq_read, | ||
| 2524 | .llseek = seq_lseek, | ||
| 2525 | .release = seq_release_net | ||
| 2526 | }; | ||
| 2527 | |||
| 2523 | static struct tcp_seq_afinfo tcp4_seq_afinfo = { | 2528 | static struct tcp_seq_afinfo tcp4_seq_afinfo = { |
| 2524 | .name = "tcp", | 2529 | .name = "tcp", |
| 2525 | .family = AF_INET, | 2530 | .family = AF_INET, |
| 2526 | .seq_fops = { | 2531 | .seq_fops = &tcp_afinfo_seq_fops, |
| 2527 | .owner = THIS_MODULE, | ||
| 2528 | }, | ||
| 2529 | .seq_ops = { | 2532 | .seq_ops = { |
| 2530 | .show = tcp4_seq_show, | 2533 | .show = tcp4_seq_show, |
| 2531 | }, | 2534 | }, |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index ebaa96bd3464..ab0966df1e2a 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
| @@ -1397,6 +1397,8 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) | |||
| 1397 | nf_reset(skb); | 1397 | nf_reset(skb); |
| 1398 | 1398 | ||
| 1399 | if (up->encap_type) { | 1399 | if (up->encap_type) { |
| 1400 | int (*encap_rcv)(struct sock *sk, struct sk_buff *skb); | ||
| 1401 | |||
| 1400 | /* | 1402 | /* |
| 1401 | * This is an encapsulation socket so pass the skb to | 1403 | * This is an encapsulation socket so pass the skb to |
| 1402 | * the socket's udp_encap_rcv() hook. Otherwise, just | 1404 | * the socket's udp_encap_rcv() hook. Otherwise, just |
| @@ -1409,11 +1411,11 @@ int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) | |||
| 1409 | */ | 1411 | */ |
| 1410 | 1412 | ||
| 1411 | /* if we're overly short, let UDP handle it */ | 1413 | /* if we're overly short, let UDP handle it */ |
| 1412 | if (skb->len > sizeof(struct udphdr) && | 1414 | encap_rcv = ACCESS_ONCE(up->encap_rcv); |
| 1413 | up->encap_rcv != NULL) { | 1415 | if (skb->len > sizeof(struct udphdr) && encap_rcv != NULL) { |
| 1414 | int ret; | 1416 | int ret; |
| 1415 | 1417 | ||
| 1416 | ret = (*up->encap_rcv)(sk, skb); | 1418 | ret = encap_rcv(sk, skb); |
| 1417 | if (ret <= 0) { | 1419 | if (ret <= 0) { |
| 1418 | UDP_INC_STATS_BH(sock_net(sk), | 1420 | UDP_INC_STATS_BH(sock_net(sk), |
| 1419 | UDP_MIB_INDATAGRAMS, | 1421 | UDP_MIB_INDATAGRAMS, |
| @@ -2037,7 +2039,7 @@ static void udp_seq_stop(struct seq_file *seq, void *v) | |||
| 2037 | spin_unlock_bh(&state->udp_table->hash[state->bucket].lock); | 2039 | spin_unlock_bh(&state->udp_table->hash[state->bucket].lock); |
| 2038 | } | 2040 | } |
| 2039 | 2041 | ||
| 2040 | static int udp_seq_open(struct inode *inode, struct file *file) | 2042 | int udp_seq_open(struct inode *inode, struct file *file) |
| 2041 | { | 2043 | { |
| 2042 | struct udp_seq_afinfo *afinfo = PDE(inode)->data; | 2044 | struct udp_seq_afinfo *afinfo = PDE(inode)->data; |
| 2043 | struct udp_iter_state *s; | 2045 | struct udp_iter_state *s; |
| @@ -2053,6 +2055,7 @@ static int udp_seq_open(struct inode *inode, struct file *file) | |||
| 2053 | s->udp_table = afinfo->udp_table; | 2055 | s->udp_table = afinfo->udp_table; |
| 2054 | return err; | 2056 | return err; |
| 2055 | } | 2057 | } |
| 2058 | EXPORT_SYMBOL(udp_seq_open); | ||
| 2056 | 2059 | ||
| 2057 | /* ------------------------------------------------------------------------ */ | 2060 | /* ------------------------------------------------------------------------ */ |
| 2058 | int udp_proc_register(struct net *net, struct udp_seq_afinfo *afinfo) | 2061 | int udp_proc_register(struct net *net, struct udp_seq_afinfo *afinfo) |
| @@ -2060,17 +2063,12 @@ int udp_proc_register(struct net *net, struct udp_seq_afinfo *afinfo) | |||
| 2060 | struct proc_dir_entry *p; | 2063 | struct proc_dir_entry *p; |
| 2061 | int rc = 0; | 2064 | int rc = 0; |
| 2062 | 2065 | ||
| 2063 | afinfo->seq_fops.open = udp_seq_open; | ||
| 2064 | afinfo->seq_fops.read = seq_read; | ||
| 2065 | afinfo->seq_fops.llseek = seq_lseek; | ||
| 2066 | afinfo->seq_fops.release = seq_release_net; | ||
| 2067 | |||
| 2068 | afinfo->seq_ops.start = udp_seq_start; | 2066 | afinfo->seq_ops.start = udp_seq_start; |
| 2069 | afinfo->seq_ops.next = udp_seq_next; | 2067 | afinfo->seq_ops.next = udp_seq_next; |
| 2070 | afinfo->seq_ops.stop = udp_seq_stop; | 2068 | afinfo->seq_ops.stop = udp_seq_stop; |
| 2071 | 2069 | ||
| 2072 | p = proc_create_data(afinfo->name, S_IRUGO, net->proc_net, | 2070 | p = proc_create_data(afinfo->name, S_IRUGO, net->proc_net, |
| 2073 | &afinfo->seq_fops, afinfo); | 2071 | afinfo->seq_fops, afinfo); |
| 2074 | if (!p) | 2072 | if (!p) |
| 2075 | rc = -ENOMEM; | 2073 | rc = -ENOMEM; |
| 2076 | return rc; | 2074 | return rc; |
| @@ -2120,14 +2118,20 @@ int udp4_seq_show(struct seq_file *seq, void *v) | |||
| 2120 | return 0; | 2118 | return 0; |
| 2121 | } | 2119 | } |
| 2122 | 2120 | ||
| 2121 | static const struct file_operations udp_afinfo_seq_fops = { | ||
| 2122 | .owner = THIS_MODULE, | ||
| 2123 | .open = udp_seq_open, | ||
| 2124 | .read = seq_read, | ||
| 2125 | .llseek = seq_lseek, | ||
| 2126 | .release = seq_release_net | ||
| 2127 | }; | ||
| 2128 | |||
| 2123 | /* ------------------------------------------------------------------------ */ | 2129 | /* ------------------------------------------------------------------------ */ |
| 2124 | static struct udp_seq_afinfo udp4_seq_afinfo = { | 2130 | static struct udp_seq_afinfo udp4_seq_afinfo = { |
| 2125 | .name = "udp", | 2131 | .name = "udp", |
| 2126 | .family = AF_INET, | 2132 | .family = AF_INET, |
| 2127 | .udp_table = &udp_table, | 2133 | .udp_table = &udp_table, |
| 2128 | .seq_fops = { | 2134 | .seq_fops = &udp_afinfo_seq_fops, |
| 2129 | .owner = THIS_MODULE, | ||
| 2130 | }, | ||
| 2131 | .seq_ops = { | 2135 | .seq_ops = { |
| 2132 | .show = udp4_seq_show, | 2136 | .show = udp4_seq_show, |
| 2133 | }, | 2137 | }, |
diff --git a/net/ipv4/udplite.c b/net/ipv4/udplite.c index aee9963f7f5a..12e9499a1a6c 100644 --- a/net/ipv4/udplite.c +++ b/net/ipv4/udplite.c | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | * as published by the Free Software Foundation; either version | 10 | * as published by the Free Software Foundation; either version |
| 11 | * 2 of the License, or (at your option) any later version. | 11 | * 2 of the License, or (at your option) any later version. |
| 12 | */ | 12 | */ |
| 13 | #include <linux/export.h> | ||
| 13 | #include "udp_impl.h" | 14 | #include "udp_impl.h" |
| 14 | 15 | ||
| 15 | struct udp_table udplite_table __read_mostly; | 16 | struct udp_table udplite_table __read_mostly; |
| @@ -71,13 +72,20 @@ static struct inet_protosw udplite4_protosw = { | |||
| 71 | }; | 72 | }; |
| 72 | 73 | ||
| 73 | #ifdef CONFIG_PROC_FS | 74 | #ifdef CONFIG_PROC_FS |
| 75 | |||
| 76 | static const struct file_operations udplite_afinfo_seq_fops = { | ||
| 77 | .owner = THIS_MODULE, | ||
| 78 | .open = udp_seq_open, | ||
| 79 | .read = seq_read, | ||
| 80 | .llseek = seq_lseek, | ||
| 81 | .release = seq_release_net | ||
| 82 | }; | ||
| 83 | |||
| 74 | static struct udp_seq_afinfo udplite4_seq_afinfo = { | 84 | static struct udp_seq_afinfo udplite4_seq_afinfo = { |
| 75 | .name = "udplite", | 85 | .name = "udplite", |
| 76 | .family = AF_INET, | 86 | .family = AF_INET, |
| 77 | .udp_table = &udplite_table, | 87 | .udp_table = &udplite_table, |
| 78 | .seq_fops = { | 88 | .seq_fops = &udplite_afinfo_seq_fops, |
| 79 | .owner = THIS_MODULE, | ||
| 80 | }, | ||
| 81 | .seq_ops = { | 89 | .seq_ops = { |
| 82 | .show = udp4_seq_show, | 90 | .show = udp4_seq_show, |
| 83 | }, | 91 | }, |
diff --git a/net/ipv4/xfrm4_state.c b/net/ipv4/xfrm4_state.c index d9ac0a0058b5..9258e751baba 100644 --- a/net/ipv4/xfrm4_state.c +++ b/net/ipv4/xfrm4_state.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include <linux/pfkeyv2.h> | 12 | #include <linux/pfkeyv2.h> |
| 13 | #include <linux/ipsec.h> | 13 | #include <linux/ipsec.h> |
| 14 | #include <linux/netfilter_ipv4.h> | 14 | #include <linux/netfilter_ipv4.h> |
| 15 | #include <linux/export.h> | ||
| 15 | 16 | ||
| 16 | static int xfrm4_init_flags(struct xfrm_state *x) | 17 | static int xfrm4_init_flags(struct xfrm_state *x) |
| 17 | { | 18 | { |
