diff options
| author | Ingo Molnar <mingo@kernel.org> | 2013-10-09 06:36:13 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2013-10-09 06:36:13 -0400 |
| commit | 37bf06375c90a42fe07b9bebdb07bc316ae5a0ce (patch) | |
| tree | de572dd6d3955b0725001776a7b03796f99e1e8e /include/net | |
| parent | 6bfa687c19b7ab8adee03f0d43c197c2945dd869 (diff) | |
| parent | d0e639c9e06d44e713170031fe05fb60ebe680af (diff) | |
Merge tag 'v3.12-rc4' into sched/core
Merge Linux v3.12-rc4 to fix a conflict and also to refresh the tree
before applying more scheduler patches.
Conflicts:
arch/avr32/include/asm/Kbuild
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'include/net')
| -rw-r--r-- | include/net/addrconf.h | 4 | ||||
| -rw-r--r-- | include/net/bluetooth/hci.h | 1 | ||||
| -rw-r--r-- | include/net/ip.h | 12 | ||||
| -rw-r--r-- | include/net/ip_vs.h | 9 | ||||
| -rw-r--r-- | include/net/mrp.h | 1 | ||||
| -rw-r--r-- | include/net/net_namespace.h | 1 | ||||
| -rw-r--r-- | include/net/netfilter/nf_conntrack_extend.h | 2 | ||||
| -rw-r--r-- | include/net/netfilter/nf_conntrack_synproxy.h | 2 | ||||
| -rw-r--r-- | include/net/secure_seq.h | 1 | ||||
| -rw-r--r-- | include/net/sock.h | 5 |
10 files changed, 25 insertions, 13 deletions
diff --git a/include/net/addrconf.h b/include/net/addrconf.h index fb314de2b61b..86505bfa5d2c 100644 --- a/include/net/addrconf.h +++ b/include/net/addrconf.h | |||
| @@ -67,6 +67,10 @@ int ipv6_chk_addr(struct net *net, const struct in6_addr *addr, | |||
| 67 | int ipv6_chk_home_addr(struct net *net, const struct in6_addr *addr); | 67 | int ipv6_chk_home_addr(struct net *net, const struct in6_addr *addr); |
| 68 | #endif | 68 | #endif |
| 69 | 69 | ||
| 70 | bool ipv6_chk_custom_prefix(const struct in6_addr *addr, | ||
| 71 | const unsigned int prefix_len, | ||
| 72 | struct net_device *dev); | ||
| 73 | |||
| 70 | int ipv6_chk_prefix(const struct in6_addr *addr, struct net_device *dev); | 74 | int ipv6_chk_prefix(const struct in6_addr *addr, struct net_device *dev); |
| 71 | 75 | ||
| 72 | struct inet6_ifaddr *ipv6_get_ifaddr(struct net *net, | 76 | struct inet6_ifaddr *ipv6_get_ifaddr(struct net *net, |
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index aaeaf0938ec0..15f10841e2b5 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
| @@ -104,6 +104,7 @@ enum { | |||
| 104 | enum { | 104 | enum { |
| 105 | HCI_SETUP, | 105 | HCI_SETUP, |
| 106 | HCI_AUTO_OFF, | 106 | HCI_AUTO_OFF, |
| 107 | HCI_RFKILLED, | ||
| 107 | HCI_MGMT, | 108 | HCI_MGMT, |
| 108 | HCI_PAIRABLE, | 109 | HCI_PAIRABLE, |
| 109 | HCI_SERVICE_CACHE, | 110 | HCI_SERVICE_CACHE, |
diff --git a/include/net/ip.h b/include/net/ip.h index 48f55979d842..5e5268807a1c 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
| @@ -264,9 +264,11 @@ int ip_dont_fragment(struct sock *sk, struct dst_entry *dst) | |||
| 264 | 264 | ||
| 265 | extern void __ip_select_ident(struct iphdr *iph, struct dst_entry *dst, int more); | 265 | extern void __ip_select_ident(struct iphdr *iph, struct dst_entry *dst, int more); |
| 266 | 266 | ||
| 267 | static inline void ip_select_ident(struct iphdr *iph, struct dst_entry *dst, struct sock *sk) | 267 | static inline void ip_select_ident(struct sk_buff *skb, struct dst_entry *dst, struct sock *sk) |
| 268 | { | 268 | { |
| 269 | if (iph->frag_off & htons(IP_DF)) { | 269 | struct iphdr *iph = ip_hdr(skb); |
| 270 | |||
| 271 | if ((iph->frag_off & htons(IP_DF)) && !skb->local_df) { | ||
| 270 | /* This is only to work around buggy Windows95/2000 | 272 | /* This is only to work around buggy Windows95/2000 |
| 271 | * VJ compression implementations. If the ID field | 273 | * VJ compression implementations. If the ID field |
| 272 | * does not change, they drop every other packet in | 274 | * does not change, they drop every other packet in |
| @@ -278,9 +280,11 @@ static inline void ip_select_ident(struct iphdr *iph, struct dst_entry *dst, str | |||
| 278 | __ip_select_ident(iph, dst, 0); | 280 | __ip_select_ident(iph, dst, 0); |
| 279 | } | 281 | } |
| 280 | 282 | ||
| 281 | static inline void ip_select_ident_more(struct iphdr *iph, struct dst_entry *dst, struct sock *sk, int more) | 283 | static inline void ip_select_ident_more(struct sk_buff *skb, struct dst_entry *dst, struct sock *sk, int more) |
| 282 | { | 284 | { |
| 283 | if (iph->frag_off & htons(IP_DF)) { | 285 | struct iphdr *iph = ip_hdr(skb); |
| 286 | |||
| 287 | if ((iph->frag_off & htons(IP_DF)) && !skb->local_df) { | ||
| 284 | if (sk && inet_sk(sk)->inet_daddr) { | 288 | if (sk && inet_sk(sk)->inet_daddr) { |
| 285 | iph->id = htons(inet_sk(sk)->inet_id); | 289 | iph->id = htons(inet_sk(sk)->inet_id); |
| 286 | inet_sk(sk)->inet_id += 1 + more; | 290 | inet_sk(sk)->inet_id += 1 + more; |
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h index f0d70f066f3d..9c4d37ec45a1 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h | |||
| @@ -723,8 +723,6 @@ struct ip_vs_dest_dst { | |||
| 723 | struct rcu_head rcu_head; | 723 | struct rcu_head rcu_head; |
| 724 | }; | 724 | }; |
| 725 | 725 | ||
| 726 | /* In grace period after removing */ | ||
| 727 | #define IP_VS_DEST_STATE_REMOVING 0x01 | ||
| 728 | /* | 726 | /* |
| 729 | * The real server destination forwarding entry | 727 | * The real server destination forwarding entry |
| 730 | * with ip address, port number, and so on. | 728 | * with ip address, port number, and so on. |
| @@ -742,7 +740,7 @@ struct ip_vs_dest { | |||
| 742 | 740 | ||
| 743 | atomic_t refcnt; /* reference counter */ | 741 | atomic_t refcnt; /* reference counter */ |
| 744 | struct ip_vs_stats stats; /* statistics */ | 742 | struct ip_vs_stats stats; /* statistics */ |
| 745 | unsigned long state; /* state flags */ | 743 | unsigned long idle_start; /* start time, jiffies */ |
| 746 | 744 | ||
| 747 | /* connection counters and thresholds */ | 745 | /* connection counters and thresholds */ |
| 748 | atomic_t activeconns; /* active connections */ | 746 | atomic_t activeconns; /* active connections */ |
| @@ -756,14 +754,13 @@ struct ip_vs_dest { | |||
| 756 | struct ip_vs_dest_dst __rcu *dest_dst; /* cached dst info */ | 754 | struct ip_vs_dest_dst __rcu *dest_dst; /* cached dst info */ |
| 757 | 755 | ||
| 758 | /* for virtual service */ | 756 | /* for virtual service */ |
| 759 | struct ip_vs_service *svc; /* service it belongs to */ | 757 | struct ip_vs_service __rcu *svc; /* service it belongs to */ |
| 760 | __u16 protocol; /* which protocol (TCP/UDP) */ | 758 | __u16 protocol; /* which protocol (TCP/UDP) */ |
| 761 | __be16 vport; /* virtual port number */ | 759 | __be16 vport; /* virtual port number */ |
| 762 | union nf_inet_addr vaddr; /* virtual IP address */ | 760 | union nf_inet_addr vaddr; /* virtual IP address */ |
| 763 | __u32 vfwmark; /* firewall mark of service */ | 761 | __u32 vfwmark; /* firewall mark of service */ |
| 764 | 762 | ||
| 765 | struct list_head t_list; /* in dest_trash */ | 763 | struct list_head t_list; /* in dest_trash */ |
| 766 | struct rcu_head rcu_head; | ||
| 767 | unsigned int in_rs_table:1; /* we are in rs_table */ | 764 | unsigned int in_rs_table:1; /* we are in rs_table */ |
| 768 | }; | 765 | }; |
| 769 | 766 | ||
| @@ -1649,7 +1646,7 @@ static inline void ip_vs_conn_drop_conntrack(struct ip_vs_conn *cp) | |||
| 1649 | /* CONFIG_IP_VS_NFCT */ | 1646 | /* CONFIG_IP_VS_NFCT */ |
| 1650 | #endif | 1647 | #endif |
| 1651 | 1648 | ||
| 1652 | static inline unsigned int | 1649 | static inline int |
| 1653 | ip_vs_dest_conn_overhead(struct ip_vs_dest *dest) | 1650 | ip_vs_dest_conn_overhead(struct ip_vs_dest *dest) |
| 1654 | { | 1651 | { |
| 1655 | /* | 1652 | /* |
diff --git a/include/net/mrp.h b/include/net/mrp.h index 4fbf02aa2ec1..0f7558b638ae 100644 --- a/include/net/mrp.h +++ b/include/net/mrp.h | |||
| @@ -112,6 +112,7 @@ struct mrp_applicant { | |||
| 112 | struct mrp_application *app; | 112 | struct mrp_application *app; |
| 113 | struct net_device *dev; | 113 | struct net_device *dev; |
| 114 | struct timer_list join_timer; | 114 | struct timer_list join_timer; |
| 115 | struct timer_list periodic_timer; | ||
| 115 | 116 | ||
| 116 | spinlock_t lock; | 117 | spinlock_t lock; |
| 117 | struct sk_buff_head queue; | 118 | struct sk_buff_head queue; |
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 1313456a0994..9d22f08896c6 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h | |||
| @@ -74,6 +74,7 @@ struct net { | |||
| 74 | struct hlist_head *dev_index_head; | 74 | struct hlist_head *dev_index_head; |
| 75 | unsigned int dev_base_seq; /* protected by rtnl_mutex */ | 75 | unsigned int dev_base_seq; /* protected by rtnl_mutex */ |
| 76 | int ifindex; | 76 | int ifindex; |
| 77 | unsigned int dev_unreg_count; | ||
| 77 | 78 | ||
| 78 | /* core fib_rules */ | 79 | /* core fib_rules */ |
| 79 | struct list_head rules_ops; | 80 | struct list_head rules_ops; |
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h index ff95434e50ca..88a1d4060d52 100644 --- a/include/net/netfilter/nf_conntrack_extend.h +++ b/include/net/netfilter/nf_conntrack_extend.h | |||
| @@ -86,7 +86,7 @@ static inline void nf_ct_ext_destroy(struct nf_conn *ct) | |||
| 86 | static inline void nf_ct_ext_free(struct nf_conn *ct) | 86 | static inline void nf_ct_ext_free(struct nf_conn *ct) |
| 87 | { | 87 | { |
| 88 | if (ct->ext) | 88 | if (ct->ext) |
| 89 | kfree(ct->ext); | 89 | kfree_rcu(ct->ext, rcu); |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | /* Add this type, returns pointer to data or NULL. */ | 92 | /* Add this type, returns pointer to data or NULL. */ |
diff --git a/include/net/netfilter/nf_conntrack_synproxy.h b/include/net/netfilter/nf_conntrack_synproxy.h index 806f54a290d6..f572f313d6f1 100644 --- a/include/net/netfilter/nf_conntrack_synproxy.h +++ b/include/net/netfilter/nf_conntrack_synproxy.h | |||
| @@ -56,7 +56,7 @@ struct synproxy_options { | |||
| 56 | 56 | ||
| 57 | struct tcphdr; | 57 | struct tcphdr; |
| 58 | struct xt_synproxy_info; | 58 | struct xt_synproxy_info; |
| 59 | extern void synproxy_parse_options(const struct sk_buff *skb, unsigned int doff, | 59 | extern bool synproxy_parse_options(const struct sk_buff *skb, unsigned int doff, |
| 60 | const struct tcphdr *th, | 60 | const struct tcphdr *th, |
| 61 | struct synproxy_options *opts); | 61 | struct synproxy_options *opts); |
| 62 | extern unsigned int synproxy_options_size(const struct synproxy_options *opts); | 62 | extern unsigned int synproxy_options_size(const struct synproxy_options *opts); |
diff --git a/include/net/secure_seq.h b/include/net/secure_seq.h index 6ca975bebd37..c2e542b27a5a 100644 --- a/include/net/secure_seq.h +++ b/include/net/secure_seq.h | |||
| @@ -3,7 +3,6 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
| 5 | 5 | ||
| 6 | extern void net_secret_init(void); | ||
| 7 | extern __u32 secure_ip_id(__be32 daddr); | 6 | extern __u32 secure_ip_id(__be32 daddr); |
| 8 | extern __u32 secure_ipv6_id(const __be32 daddr[4]); | 7 | extern __u32 secure_ipv6_id(const __be32 daddr[4]); |
| 9 | extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport); | 8 | extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport); |
diff --git a/include/net/sock.h b/include/net/sock.h index 6ba2e7b0e2b1..1d37a8086bed 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
| @@ -409,6 +409,11 @@ struct sock { | |||
| 409 | void (*sk_destruct)(struct sock *sk); | 409 | void (*sk_destruct)(struct sock *sk); |
| 410 | }; | 410 | }; |
| 411 | 411 | ||
| 412 | #define __sk_user_data(sk) ((*((void __rcu **)&(sk)->sk_user_data))) | ||
| 413 | |||
| 414 | #define rcu_dereference_sk_user_data(sk) rcu_dereference(__sk_user_data((sk))) | ||
| 415 | #define rcu_assign_sk_user_data(sk, ptr) rcu_assign_pointer(__sk_user_data((sk)), ptr) | ||
| 416 | |||
| 412 | /* | 417 | /* |
| 413 | * SK_CAN_REUSE and SK_NO_REUSE on a socket mean that the socket is OK | 418 | * SK_CAN_REUSE and SK_NO_REUSE on a socket mean that the socket is OK |
| 414 | * or not whether his port will be reused by someone else. SK_FORCE_REUSE | 419 | * or not whether his port will be reused by someone else. SK_FORCE_REUSE |
