diff options
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/9p/9p.h | 33 | ||||
-rw-r--r-- | include/net/9p/client.h | 2 | ||||
-rw-r--r-- | include/net/caif/cfctrl.h | 4 | ||||
-rw-r--r-- | include/net/cfg80211.h | 15 | ||||
-rw-r--r-- | include/net/cls_cgroup.h | 63 | ||||
-rw-r--r-- | include/net/dn_dev.h | 8 | ||||
-rw-r--r-- | include/net/dn_nsp.h | 16 | ||||
-rw-r--r-- | include/net/dn_route.h | 4 | ||||
-rw-r--r-- | include/net/dst.h | 6 | ||||
-rw-r--r-- | include/net/genetlink.h | 15 | ||||
-rw-r--r-- | include/net/ip.h | 13 | ||||
-rw-r--r-- | include/net/ip6_fib.h | 10 | ||||
-rw-r--r-- | include/net/ip6_tunnel.h | 2 | ||||
-rw-r--r-- | include/net/ipip.h | 2 | ||||
-rw-r--r-- | include/net/ipv6.h | 10 | ||||
-rw-r--r-- | include/net/ipx.h | 8 | ||||
-rw-r--r-- | include/net/mip6.h | 2 | ||||
-rw-r--r-- | include/net/ndisc.h | 2 | ||||
-rw-r--r-- | include/net/netfilter/nf_conntrack.h | 6 | ||||
-rw-r--r-- | include/net/phonet/pn_dev.h | 1 | ||||
-rw-r--r-- | include/net/pkt_sched.h | 2 | ||||
-rw-r--r-- | include/net/route.h | 6 | ||||
-rw-r--r-- | include/net/sch_generic.h | 27 | ||||
-rw-r--r-- | include/net/sctp/structs.h | 6 | ||||
-rw-r--r-- | include/net/sock.h | 57 | ||||
-rw-r--r-- | include/net/tcp.h | 3 |
26 files changed, 209 insertions, 114 deletions
diff --git a/include/net/9p/9p.h b/include/net/9p/9p.h index a7fb54808a23..156c26bb8bd7 100644 --- a/include/net/9p/9p.h +++ b/include/net/9p/9p.h | |||
@@ -86,6 +86,10 @@ do { \ | |||
86 | 86 | ||
87 | /** | 87 | /** |
88 | * enum p9_msg_t - 9P message types | 88 | * enum p9_msg_t - 9P message types |
89 | * @P9_TSTATFS: file system status request | ||
90 | * @P9_RSTATFS: file system status response | ||
91 | * @P9_TRENAME: rename request | ||
92 | * @P9_RRENAME: rename response | ||
89 | * @P9_TVERSION: version handshake request | 93 | * @P9_TVERSION: version handshake request |
90 | * @P9_RVERSION: version handshake response | 94 | * @P9_RVERSION: version handshake response |
91 | * @P9_TAUTH: request to establish authentication channel | 95 | * @P9_TAUTH: request to establish authentication channel |
@@ -125,6 +129,10 @@ do { \ | |||
125 | */ | 129 | */ |
126 | 130 | ||
127 | enum p9_msg_t { | 131 | enum p9_msg_t { |
132 | P9_TSTATFS = 8, | ||
133 | P9_RSTATFS, | ||
134 | P9_TRENAME = 20, | ||
135 | P9_RRENAME, | ||
128 | P9_TVERSION = 100, | 136 | P9_TVERSION = 100, |
129 | P9_RVERSION, | 137 | P9_RVERSION, |
130 | P9_TAUTH = 102, | 138 | P9_TAUTH = 102, |
@@ -350,6 +358,31 @@ struct p9_wstat { | |||
350 | }; | 358 | }; |
351 | 359 | ||
352 | /* Structures for Protocol Operations */ | 360 | /* Structures for Protocol Operations */ |
361 | struct p9_tstatfs { | ||
362 | u32 fid; | ||
363 | }; | ||
364 | |||
365 | struct p9_rstatfs { | ||
366 | u32 type; | ||
367 | u32 bsize; | ||
368 | u64 blocks; | ||
369 | u64 bfree; | ||
370 | u64 bavail; | ||
371 | u64 files; | ||
372 | u64 ffree; | ||
373 | u64 fsid; | ||
374 | u32 namelen; | ||
375 | }; | ||
376 | |||
377 | struct p9_trename { | ||
378 | u32 fid; | ||
379 | u32 newdirfid; | ||
380 | struct p9_str name; | ||
381 | }; | ||
382 | |||
383 | struct p9_rrename { | ||
384 | }; | ||
385 | |||
353 | struct p9_tversion { | 386 | struct p9_tversion { |
354 | u32 msize; | 387 | u32 msize; |
355 | struct p9_str version; | 388 | struct p9_str version; |
diff --git a/include/net/9p/client.h b/include/net/9p/client.h index 4f3760afc20f..7dd3ed85c782 100644 --- a/include/net/9p/client.h +++ b/include/net/9p/client.h | |||
@@ -195,6 +195,8 @@ struct p9_fid { | |||
195 | struct list_head dlist; /* list of all fids attached to a dentry */ | 195 | struct list_head dlist; /* list of all fids attached to a dentry */ |
196 | }; | 196 | }; |
197 | 197 | ||
198 | int p9_client_statfs(struct p9_fid *fid, struct p9_rstatfs *sb); | ||
199 | int p9_client_rename(struct p9_fid *fid, struct p9_fid *newdirfid, char *name); | ||
198 | int p9_client_version(struct p9_client *); | 200 | int p9_client_version(struct p9_client *); |
199 | struct p9_client *p9_client_create(const char *dev_name, char *options); | 201 | struct p9_client *p9_client_create(const char *dev_name, char *options); |
200 | void p9_client_destroy(struct p9_client *clnt); | 202 | void p9_client_destroy(struct p9_client *clnt); |
diff --git a/include/net/caif/cfctrl.h b/include/net/caif/cfctrl.h index 997603f2bf4c..9402543fc20d 100644 --- a/include/net/caif/cfctrl.h +++ b/include/net/caif/cfctrl.h | |||
@@ -94,8 +94,8 @@ struct cfctrl_request_info { | |||
94 | enum cfctrl_cmd cmd; | 94 | enum cfctrl_cmd cmd; |
95 | u8 channel_id; | 95 | u8 channel_id; |
96 | struct cfctrl_link_param param; | 96 | struct cfctrl_link_param param; |
97 | struct cfctrl_request_info *next; | ||
98 | struct cflayer *client_layer; | 97 | struct cflayer *client_layer; |
98 | struct list_head list; | ||
99 | }; | 99 | }; |
100 | 100 | ||
101 | struct cfctrl { | 101 | struct cfctrl { |
@@ -103,7 +103,7 @@ struct cfctrl { | |||
103 | struct cfctrl_rsp res; | 103 | struct cfctrl_rsp res; |
104 | atomic_t req_seq_no; | 104 | atomic_t req_seq_no; |
105 | atomic_t rsp_seq_no; | 105 | atomic_t rsp_seq_no; |
106 | struct cfctrl_request_info *first_req; | 106 | struct list_head list; |
107 | /* Protects from simultaneous access to first_req list */ | 107 | /* Protects from simultaneous access to first_req list */ |
108 | spinlock_t info_list_lock; | 108 | spinlock_t info_list_lock; |
109 | #ifndef CAIF_NO_LOOP | 109 | #ifndef CAIF_NO_LOOP |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 22ab9d88cf4a..a56bac1e69e0 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -1369,26 +1369,15 @@ struct wiphy { | |||
1369 | char priv[0] __attribute__((__aligned__(NETDEV_ALIGN))); | 1369 | char priv[0] __attribute__((__aligned__(NETDEV_ALIGN))); |
1370 | }; | 1370 | }; |
1371 | 1371 | ||
1372 | #ifdef CONFIG_NET_NS | ||
1373 | static inline struct net *wiphy_net(struct wiphy *wiphy) | ||
1374 | { | ||
1375 | return wiphy->_net; | ||
1376 | } | ||
1377 | |||
1378 | static inline void wiphy_net_set(struct wiphy *wiphy, struct net *net) | ||
1379 | { | ||
1380 | wiphy->_net = net; | ||
1381 | } | ||
1382 | #else | ||
1383 | static inline struct net *wiphy_net(struct wiphy *wiphy) | 1372 | static inline struct net *wiphy_net(struct wiphy *wiphy) |
1384 | { | 1373 | { |
1385 | return &init_net; | 1374 | return read_pnet(&wiphy->_net); |
1386 | } | 1375 | } |
1387 | 1376 | ||
1388 | static inline void wiphy_net_set(struct wiphy *wiphy, struct net *net) | 1377 | static inline void wiphy_net_set(struct wiphy *wiphy, struct net *net) |
1389 | { | 1378 | { |
1379 | write_pnet(&wiphy->_net, net); | ||
1390 | } | 1380 | } |
1391 | #endif | ||
1392 | 1381 | ||
1393 | /** | 1382 | /** |
1394 | * wiphy_priv - return priv from wiphy | 1383 | * wiphy_priv - return priv from wiphy |
diff --git a/include/net/cls_cgroup.h b/include/net/cls_cgroup.h new file mode 100644 index 000000000000..726cc3536409 --- /dev/null +++ b/include/net/cls_cgroup.h | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * cls_cgroup.h Control Group Classifier | ||
3 | * | ||
4 | * Authors: Thomas Graf <tgraf@suug.ch> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the Free | ||
8 | * Software Foundation; either version 2 of the License, or (at your option) | ||
9 | * any later version. | ||
10 | * | ||
11 | */ | ||
12 | |||
13 | #ifndef _NET_CLS_CGROUP_H | ||
14 | #define _NET_CLS_CGROUP_H | ||
15 | |||
16 | #include <linux/cgroup.h> | ||
17 | #include <linux/hardirq.h> | ||
18 | #include <linux/rcupdate.h> | ||
19 | |||
20 | #ifdef CONFIG_CGROUPS | ||
21 | struct cgroup_cls_state | ||
22 | { | ||
23 | struct cgroup_subsys_state css; | ||
24 | u32 classid; | ||
25 | }; | ||
26 | |||
27 | #ifdef CONFIG_NET_CLS_CGROUP | ||
28 | static inline u32 task_cls_classid(struct task_struct *p) | ||
29 | { | ||
30 | if (in_interrupt()) | ||
31 | return 0; | ||
32 | |||
33 | return container_of(task_subsys_state(p, net_cls_subsys_id), | ||
34 | struct cgroup_cls_state, css)->classid; | ||
35 | } | ||
36 | #else | ||
37 | extern int net_cls_subsys_id; | ||
38 | |||
39 | static inline u32 task_cls_classid(struct task_struct *p) | ||
40 | { | ||
41 | int id; | ||
42 | u32 classid = 0; | ||
43 | |||
44 | if (in_interrupt()) | ||
45 | return 0; | ||
46 | |||
47 | rcu_read_lock(); | ||
48 | id = rcu_dereference(net_cls_subsys_id); | ||
49 | if (id >= 0) | ||
50 | classid = container_of(task_subsys_state(p, id), | ||
51 | struct cgroup_cls_state, css)->classid; | ||
52 | rcu_read_unlock(); | ||
53 | |||
54 | return classid; | ||
55 | } | ||
56 | #endif | ||
57 | #else | ||
58 | static inline u32 task_cls_classid(struct task_struct *p) | ||
59 | { | ||
60 | return 0; | ||
61 | } | ||
62 | #endif | ||
63 | #endif /* _NET_CLS_CGROUP_H */ | ||
diff --git a/include/net/dn_dev.h b/include/net/dn_dev.h index 511a459ec10f..0916bbf3bdff 100644 --- a/include/net/dn_dev.h +++ b/include/net/dn_dev.h | |||
@@ -101,7 +101,7 @@ struct dn_short_packet { | |||
101 | __le16 dstnode; | 101 | __le16 dstnode; |
102 | __le16 srcnode; | 102 | __le16 srcnode; |
103 | __u8 forward; | 103 | __u8 forward; |
104 | } __attribute__((packed)); | 104 | } __packed; |
105 | 105 | ||
106 | struct dn_long_packet { | 106 | struct dn_long_packet { |
107 | __u8 msgflg; | 107 | __u8 msgflg; |
@@ -115,7 +115,7 @@ struct dn_long_packet { | |||
115 | __u8 visit_ct; | 115 | __u8 visit_ct; |
116 | __u8 s_class; | 116 | __u8 s_class; |
117 | __u8 pt; | 117 | __u8 pt; |
118 | } __attribute__((packed)); | 118 | } __packed; |
119 | 119 | ||
120 | /*------------------------- DRP - Routing messages ---------------------*/ | 120 | /*------------------------- DRP - Routing messages ---------------------*/ |
121 | 121 | ||
@@ -132,7 +132,7 @@ struct endnode_hello_message { | |||
132 | __u8 mpd; | 132 | __u8 mpd; |
133 | __u8 datalen; | 133 | __u8 datalen; |
134 | __u8 data[2]; | 134 | __u8 data[2]; |
135 | } __attribute__((packed)); | 135 | } __packed; |
136 | 136 | ||
137 | struct rtnode_hello_message { | 137 | struct rtnode_hello_message { |
138 | __u8 msgflg; | 138 | __u8 msgflg; |
@@ -144,7 +144,7 @@ struct rtnode_hello_message { | |||
144 | __u8 area; | 144 | __u8 area; |
145 | __le16 timer; | 145 | __le16 timer; |
146 | __u8 mpd; | 146 | __u8 mpd; |
147 | } __attribute__((packed)); | 147 | } __packed; |
148 | 148 | ||
149 | 149 | ||
150 | extern void dn_dev_init(void); | 150 | extern void dn_dev_init(void); |
diff --git a/include/net/dn_nsp.h b/include/net/dn_nsp.h index 17d43d2db5ec..e43a2893f132 100644 --- a/include/net/dn_nsp.h +++ b/include/net/dn_nsp.h | |||
@@ -74,18 +74,18 @@ struct nsp_data_seg_msg { | |||
74 | __u8 msgflg; | 74 | __u8 msgflg; |
75 | __le16 dstaddr; | 75 | __le16 dstaddr; |
76 | __le16 srcaddr; | 76 | __le16 srcaddr; |
77 | } __attribute__((packed)); | 77 | } __packed; |
78 | 78 | ||
79 | struct nsp_data_opt_msg { | 79 | struct nsp_data_opt_msg { |
80 | __le16 acknum; | 80 | __le16 acknum; |
81 | __le16 segnum; | 81 | __le16 segnum; |
82 | __le16 lsflgs; | 82 | __le16 lsflgs; |
83 | } __attribute__((packed)); | 83 | } __packed; |
84 | 84 | ||
85 | struct nsp_data_opt_msg1 { | 85 | struct nsp_data_opt_msg1 { |
86 | __le16 acknum; | 86 | __le16 acknum; |
87 | __le16 segnum; | 87 | __le16 segnum; |
88 | } __attribute__((packed)); | 88 | } __packed; |
89 | 89 | ||
90 | 90 | ||
91 | /* Acknowledgment Message (data/other data) */ | 91 | /* Acknowledgment Message (data/other data) */ |
@@ -94,13 +94,13 @@ struct nsp_data_ack_msg { | |||
94 | __le16 dstaddr; | 94 | __le16 dstaddr; |
95 | __le16 srcaddr; | 95 | __le16 srcaddr; |
96 | __le16 acknum; | 96 | __le16 acknum; |
97 | } __attribute__((packed)); | 97 | } __packed; |
98 | 98 | ||
99 | /* Connect Acknowledgment Message */ | 99 | /* Connect Acknowledgment Message */ |
100 | struct nsp_conn_ack_msg { | 100 | struct nsp_conn_ack_msg { |
101 | __u8 msgflg; | 101 | __u8 msgflg; |
102 | __le16 dstaddr; | 102 | __le16 dstaddr; |
103 | } __attribute__((packed)); | 103 | } __packed; |
104 | 104 | ||
105 | 105 | ||
106 | /* Connect Initiate/Retransmit Initiate/Connect Confirm */ | 106 | /* Connect Initiate/Retransmit Initiate/Connect Confirm */ |
@@ -117,7 +117,7 @@ struct nsp_conn_init_msg { | |||
117 | #define NSP_FC_MASK 0x0c /* FC type mask */ | 117 | #define NSP_FC_MASK 0x0c /* FC type mask */ |
118 | __u8 info; | 118 | __u8 info; |
119 | __le16 segsize; | 119 | __le16 segsize; |
120 | } __attribute__((packed)); | 120 | } __packed; |
121 | 121 | ||
122 | /* Disconnect Initiate/Disconnect Confirm */ | 122 | /* Disconnect Initiate/Disconnect Confirm */ |
123 | struct nsp_disconn_init_msg { | 123 | struct nsp_disconn_init_msg { |
@@ -125,7 +125,7 @@ struct nsp_disconn_init_msg { | |||
125 | __le16 dstaddr; | 125 | __le16 dstaddr; |
126 | __le16 srcaddr; | 126 | __le16 srcaddr; |
127 | __le16 reason; | 127 | __le16 reason; |
128 | } __attribute__((packed)); | 128 | } __packed; |
129 | 129 | ||
130 | 130 | ||
131 | 131 | ||
@@ -135,7 +135,7 @@ struct srcobj_fmt { | |||
135 | __le16 grpcode; | 135 | __le16 grpcode; |
136 | __le16 usrcode; | 136 | __le16 usrcode; |
137 | __u8 dlen; | 137 | __u8 dlen; |
138 | } __attribute__((packed)); | 138 | } __packed; |
139 | 139 | ||
140 | /* | 140 | /* |
141 | * A collection of functions for manipulating the sequence | 141 | * A collection of functions for manipulating the sequence |
diff --git a/include/net/dn_route.h b/include/net/dn_route.h index 60c9f22d8694..ccadab3aa3f6 100644 --- a/include/net/dn_route.h +++ b/include/net/dn_route.h | |||
@@ -65,9 +65,7 @@ extern void dn_rt_cache_flush(int delay); | |||
65 | * packets to the originating host. | 65 | * packets to the originating host. |
66 | */ | 66 | */ |
67 | struct dn_route { | 67 | struct dn_route { |
68 | union { | 68 | struct dst_entry dst; |
69 | struct dst_entry dst; | ||
70 | } u; | ||
71 | 69 | ||
72 | struct flowi fl; | 70 | struct flowi fl; |
73 | 71 | ||
diff --git a/include/net/dst.h b/include/net/dst.h index 612069beda73..81d1413a8701 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -250,11 +250,11 @@ static inline void skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev) | |||
250 | * Linux networking. Thus, destinations are stackable. | 250 | * Linux networking. Thus, destinations are stackable. |
251 | */ | 251 | */ |
252 | 252 | ||
253 | static inline struct dst_entry *dst_pop(struct dst_entry *dst) | 253 | static inline struct dst_entry *skb_dst_pop(struct sk_buff *skb) |
254 | { | 254 | { |
255 | struct dst_entry *child = dst_clone(dst->child); | 255 | struct dst_entry *child = skb_dst(skb)->child; |
256 | 256 | ||
257 | dst_release(dst); | 257 | skb_dst_drop(skb); |
258 | return child; | 258 | return child; |
259 | } | 259 | } |
260 | 260 | ||
diff --git a/include/net/genetlink.h b/include/net/genetlink.h index eb551baafc04..f7dcd2c70412 100644 --- a/include/net/genetlink.h +++ b/include/net/genetlink.h | |||
@@ -68,26 +68,15 @@ struct genl_info { | |||
68 | #endif | 68 | #endif |
69 | }; | 69 | }; |
70 | 70 | ||
71 | #ifdef CONFIG_NET_NS | ||
72 | static inline struct net *genl_info_net(struct genl_info *info) | 71 | static inline struct net *genl_info_net(struct genl_info *info) |
73 | { | 72 | { |
74 | return info->_net; | 73 | return read_pnet(&info->_net); |
75 | } | 74 | } |
76 | 75 | ||
77 | static inline void genl_info_net_set(struct genl_info *info, struct net *net) | 76 | static inline void genl_info_net_set(struct genl_info *info, struct net *net) |
78 | { | 77 | { |
79 | info->_net = net; | 78 | write_pnet(&info->_net, net); |
80 | } | 79 | } |
81 | #else | ||
82 | static inline struct net *genl_info_net(struct genl_info *info) | ||
83 | { | ||
84 | return &init_net; | ||
85 | } | ||
86 | |||
87 | static inline void genl_info_net_set(struct genl_info *info, struct net *net) | ||
88 | { | ||
89 | } | ||
90 | #endif | ||
91 | 80 | ||
92 | /** | 81 | /** |
93 | * struct genl_ops - generic netlink operations | 82 | * struct genl_ops - generic netlink operations |
diff --git a/include/net/ip.h b/include/net/ip.h index 63548f0a44b1..d52f01180361 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
@@ -61,11 +61,14 @@ struct ipcm_cookie { | |||
61 | struct ip_ra_chain { | 61 | struct ip_ra_chain { |
62 | struct ip_ra_chain *next; | 62 | struct ip_ra_chain *next; |
63 | struct sock *sk; | 63 | struct sock *sk; |
64 | void (*destructor)(struct sock *); | 64 | union { |
65 | void (*destructor)(struct sock *); | ||
66 | struct sock *saved_sk; | ||
67 | }; | ||
68 | struct rcu_head rcu; | ||
65 | }; | 69 | }; |
66 | 70 | ||
67 | extern struct ip_ra_chain *ip_ra_chain; | 71 | extern struct ip_ra_chain *ip_ra_chain; |
68 | extern rwlock_t ip_ra_lock; | ||
69 | 72 | ||
70 | /* IP flags. */ | 73 | /* IP flags. */ |
71 | #define IP_CE 0x8000 /* Flag: "Congestion" */ | 74 | #define IP_CE 0x8000 /* Flag: "Congestion" */ |
@@ -358,11 +361,11 @@ enum ip_defrag_users { | |||
358 | IP_DEFRAG_LOCAL_DELIVER, | 361 | IP_DEFRAG_LOCAL_DELIVER, |
359 | IP_DEFRAG_CALL_RA_CHAIN, | 362 | IP_DEFRAG_CALL_RA_CHAIN, |
360 | IP_DEFRAG_CONNTRACK_IN, | 363 | IP_DEFRAG_CONNTRACK_IN, |
361 | __IP_DEFRAG_CONNTRACK_IN_END = IP_DEFRAG_CONNTRACK_IN + USHORT_MAX, | 364 | __IP_DEFRAG_CONNTRACK_IN_END = IP_DEFRAG_CONNTRACK_IN + USHRT_MAX, |
362 | IP_DEFRAG_CONNTRACK_OUT, | 365 | IP_DEFRAG_CONNTRACK_OUT, |
363 | __IP_DEFRAG_CONNTRACK_OUT_END = IP_DEFRAG_CONNTRACK_OUT + USHORT_MAX, | 366 | __IP_DEFRAG_CONNTRACK_OUT_END = IP_DEFRAG_CONNTRACK_OUT + USHRT_MAX, |
364 | IP_DEFRAG_CONNTRACK_BRIDGE_IN, | 367 | IP_DEFRAG_CONNTRACK_BRIDGE_IN, |
365 | __IP_DEFRAG_CONNTRACK_BRIDGE_IN = IP_DEFRAG_CONNTRACK_BRIDGE_IN + USHORT_MAX, | 368 | __IP_DEFRAG_CONNTRACK_BRIDGE_IN = IP_DEFRAG_CONNTRACK_BRIDGE_IN + USHRT_MAX, |
366 | IP_DEFRAG_VS_IN, | 369 | IP_DEFRAG_VS_IN, |
367 | IP_DEFRAG_VS_OUT, | 370 | IP_DEFRAG_VS_OUT, |
368 | IP_DEFRAG_VS_FWD | 371 | IP_DEFRAG_VS_FWD |
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 4b1dc1161c37..062a823d311c 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h | |||
@@ -84,13 +84,11 @@ struct rt6key { | |||
84 | struct fib6_table; | 84 | struct fib6_table; |
85 | 85 | ||
86 | struct rt6_info { | 86 | struct rt6_info { |
87 | union { | 87 | struct dst_entry dst; |
88 | struct dst_entry dst; | ||
89 | } u; | ||
90 | 88 | ||
91 | #define rt6i_dev u.dst.dev | 89 | #define rt6i_dev dst.dev |
92 | #define rt6i_nexthop u.dst.neighbour | 90 | #define rt6i_nexthop dst.neighbour |
93 | #define rt6i_expires u.dst.expires | 91 | #define rt6i_expires dst.expires |
94 | 92 | ||
95 | /* | 93 | /* |
96 | * Tail elements of dst_entry (__refcnt etc.) | 94 | * Tail elements of dst_entry (__refcnt etc.) |
diff --git a/include/net/ip6_tunnel.h b/include/net/ip6_tunnel.h index fbf9d1cda27b..fc94ec568a50 100644 --- a/include/net/ip6_tunnel.h +++ b/include/net/ip6_tunnel.h | |||
@@ -27,6 +27,6 @@ struct ipv6_tlv_tnl_enc_lim { | |||
27 | __u8 type; /* type-code for option */ | 27 | __u8 type; /* type-code for option */ |
28 | __u8 length; /* option length */ | 28 | __u8 length; /* option length */ |
29 | __u8 encap_limit; /* tunnel encapsulation limit */ | 29 | __u8 encap_limit; /* tunnel encapsulation limit */ |
30 | } __attribute__ ((packed)); | 30 | } __packed; |
31 | 31 | ||
32 | #endif | 32 | #endif |
diff --git a/include/net/ipip.h b/include/net/ipip.h index 11e8513d2d07..65caea8b414f 100644 --- a/include/net/ipip.h +++ b/include/net/ipip.h | |||
@@ -50,7 +50,7 @@ struct ip_tunnel_prl_entry { | |||
50 | int pkt_len = skb->len - skb_transport_offset(skb); \ | 50 | int pkt_len = skb->len - skb_transport_offset(skb); \ |
51 | \ | 51 | \ |
52 | skb->ip_summed = CHECKSUM_NONE; \ | 52 | skb->ip_summed = CHECKSUM_NONE; \ |
53 | ip_select_ident(iph, &rt->u.dst, NULL); \ | 53 | ip_select_ident(iph, &rt->dst, NULL); \ |
54 | \ | 54 | \ |
55 | err = ip_local_out(skb); \ | 55 | err = ip_local_out(skb); \ |
56 | if (likely(net_xmit_eval(err) == 0)) { \ | 56 | if (likely(net_xmit_eval(err) == 0)) { \ |
diff --git a/include/net/ipv6.h b/include/net/ipv6.h index eba5cc00325a..f5808d596aab 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h | |||
@@ -354,11 +354,11 @@ struct inet_frag_queue; | |||
354 | enum ip6_defrag_users { | 354 | enum ip6_defrag_users { |
355 | IP6_DEFRAG_LOCAL_DELIVER, | 355 | IP6_DEFRAG_LOCAL_DELIVER, |
356 | IP6_DEFRAG_CONNTRACK_IN, | 356 | IP6_DEFRAG_CONNTRACK_IN, |
357 | __IP6_DEFRAG_CONNTRACK_IN = IP6_DEFRAG_CONNTRACK_IN + USHORT_MAX, | 357 | __IP6_DEFRAG_CONNTRACK_IN = IP6_DEFRAG_CONNTRACK_IN + USHRT_MAX, |
358 | IP6_DEFRAG_CONNTRACK_OUT, | 358 | IP6_DEFRAG_CONNTRACK_OUT, |
359 | __IP6_DEFRAG_CONNTRACK_OUT = IP6_DEFRAG_CONNTRACK_OUT + USHORT_MAX, | 359 | __IP6_DEFRAG_CONNTRACK_OUT = IP6_DEFRAG_CONNTRACK_OUT + USHRT_MAX, |
360 | IP6_DEFRAG_CONNTRACK_BRIDGE_IN, | 360 | IP6_DEFRAG_CONNTRACK_BRIDGE_IN, |
361 | __IP6_DEFRAG_CONNTRACK_BRIDGE_IN = IP6_DEFRAG_CONNTRACK_BRIDGE_IN + USHORT_MAX, | 361 | __IP6_DEFRAG_CONNTRACK_BRIDGE_IN = IP6_DEFRAG_CONNTRACK_BRIDGE_IN + USHRT_MAX, |
362 | }; | 362 | }; |
363 | 363 | ||
364 | struct ip6_create_arg { | 364 | struct ip6_create_arg { |
@@ -551,6 +551,10 @@ extern int ipv6_ext_hdr(u8 nexthdr); | |||
551 | 551 | ||
552 | extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type); | 552 | extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type); |
553 | 553 | ||
554 | extern struct in6_addr *fl6_update_dst(struct flowi *fl, | ||
555 | const struct ipv6_txoptions *opt, | ||
556 | struct in6_addr *orig); | ||
557 | |||
554 | /* | 558 | /* |
555 | * socket options (ipv6_sockglue.c) | 559 | * socket options (ipv6_sockglue.c) |
556 | */ | 560 | */ |
diff --git a/include/net/ipx.h b/include/net/ipx.h index ef51a668ba19..05d7e4a88b49 100644 --- a/include/net/ipx.h +++ b/include/net/ipx.h | |||
@@ -27,9 +27,9 @@ struct ipx_address { | |||
27 | #define IPX_MAX_PPROP_HOPS 8 | 27 | #define IPX_MAX_PPROP_HOPS 8 |
28 | 28 | ||
29 | struct ipxhdr { | 29 | struct ipxhdr { |
30 | __be16 ipx_checksum __attribute__ ((packed)); | 30 | __be16 ipx_checksum __packed; |
31 | #define IPX_NO_CHECKSUM cpu_to_be16(0xFFFF) | 31 | #define IPX_NO_CHECKSUM cpu_to_be16(0xFFFF) |
32 | __be16 ipx_pktsize __attribute__ ((packed)); | 32 | __be16 ipx_pktsize __packed; |
33 | __u8 ipx_tctrl; | 33 | __u8 ipx_tctrl; |
34 | __u8 ipx_type; | 34 | __u8 ipx_type; |
35 | #define IPX_TYPE_UNKNOWN 0x00 | 35 | #define IPX_TYPE_UNKNOWN 0x00 |
@@ -38,8 +38,8 @@ struct ipxhdr { | |||
38 | #define IPX_TYPE_SPX 0x05 /* SPX protocol */ | 38 | #define IPX_TYPE_SPX 0x05 /* SPX protocol */ |
39 | #define IPX_TYPE_NCP 0x11 /* $lots for docs on this (SPIT) */ | 39 | #define IPX_TYPE_NCP 0x11 /* $lots for docs on this (SPIT) */ |
40 | #define IPX_TYPE_PPROP 0x14 /* complicated flood fill brdcast */ | 40 | #define IPX_TYPE_PPROP 0x14 /* complicated flood fill brdcast */ |
41 | struct ipx_address ipx_dest __attribute__ ((packed)); | 41 | struct ipx_address ipx_dest __packed; |
42 | struct ipx_address ipx_source __attribute__ ((packed)); | 42 | struct ipx_address ipx_source __packed; |
43 | }; | 43 | }; |
44 | 44 | ||
45 | static __inline__ struct ipxhdr *ipx_hdr(struct sk_buff *skb) | 45 | static __inline__ struct ipxhdr *ipx_hdr(struct sk_buff *skb) |
diff --git a/include/net/mip6.h b/include/net/mip6.h index a83ad1982a90..26ba99b5a4b1 100644 --- a/include/net/mip6.h +++ b/include/net/mip6.h | |||
@@ -39,7 +39,7 @@ struct ip6_mh { | |||
39 | __u16 ip6mh_cksum; | 39 | __u16 ip6mh_cksum; |
40 | /* Followed by type specific messages */ | 40 | /* Followed by type specific messages */ |
41 | __u8 data[0]; | 41 | __u8 data[0]; |
42 | } __attribute__ ((__packed__)); | 42 | } __packed; |
43 | 43 | ||
44 | #define IP6_MH_TYPE_BRR 0 /* Binding Refresh Request */ | 44 | #define IP6_MH_TYPE_BRR 0 /* Binding Refresh Request */ |
45 | #define IP6_MH_TYPE_HOTI 1 /* HOTI Message */ | 45 | #define IP6_MH_TYPE_HOTI 1 /* HOTI Message */ |
diff --git a/include/net/ndisc.h b/include/net/ndisc.h index f76f22d05721..895997bc2ead 100644 --- a/include/net/ndisc.h +++ b/include/net/ndisc.h | |||
@@ -82,7 +82,7 @@ struct ra_msg { | |||
82 | struct nd_opt_hdr { | 82 | struct nd_opt_hdr { |
83 | __u8 nd_opt_type; | 83 | __u8 nd_opt_type; |
84 | __u8 nd_opt_len; | 84 | __u8 nd_opt_len; |
85 | } __attribute__((__packed__)); | 85 | } __packed; |
86 | 86 | ||
87 | 87 | ||
88 | extern int ndisc_init(void); | 88 | extern int ndisc_init(void); |
diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h index bde095f7e845..bbfdd9453087 100644 --- a/include/net/netfilter/nf_conntrack.h +++ b/include/net/netfilter/nf_conntrack.h | |||
@@ -152,11 +152,7 @@ extern struct net init_net; | |||
152 | 152 | ||
153 | static inline struct net *nf_ct_net(const struct nf_conn *ct) | 153 | static inline struct net *nf_ct_net(const struct nf_conn *ct) |
154 | { | 154 | { |
155 | #ifdef CONFIG_NET_NS | 155 | return read_pnet(&ct->ct_net); |
156 | return ct->ct_net; | ||
157 | #else | ||
158 | return &init_net; | ||
159 | #endif | ||
160 | } | 156 | } |
161 | 157 | ||
162 | /* Alter reply tuple (maybe alter helper). */ | 158 | /* Alter reply tuple (maybe alter helper). */ |
diff --git a/include/net/phonet/pn_dev.h b/include/net/phonet/pn_dev.h index d7b989ca3d63..2d16783d5e20 100644 --- a/include/net/phonet/pn_dev.h +++ b/include/net/phonet/pn_dev.h | |||
@@ -34,6 +34,7 @@ struct phonet_device { | |||
34 | struct list_head list; | 34 | struct list_head list; |
35 | struct net_device *netdev; | 35 | struct net_device *netdev; |
36 | DECLARE_BITMAP(addrs, 64); | 36 | DECLARE_BITMAP(addrs, 64); |
37 | struct rcu_head rcu; | ||
37 | }; | 38 | }; |
38 | 39 | ||
39 | int phonet_device_init(void); | 40 | int phonet_device_init(void); |
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 9d4d87cc970e..d9549af6929a 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h | |||
@@ -95,7 +95,7 @@ extern void __qdisc_run(struct Qdisc *q); | |||
95 | 95 | ||
96 | static inline void qdisc_run(struct Qdisc *q) | 96 | static inline void qdisc_run(struct Qdisc *q) |
97 | { | 97 | { |
98 | if (!test_and_set_bit(__QDISC_STATE_RUNNING, &q->state)) | 98 | if (qdisc_run_begin(q)) |
99 | __qdisc_run(q); | 99 | __qdisc_run(q); |
100 | } | 100 | } |
101 | 101 | ||
diff --git a/include/net/route.h b/include/net/route.h index af6cf4b4c9dc..bd732d62e1c3 100644 --- a/include/net/route.h +++ b/include/net/route.h | |||
@@ -50,9 +50,7 @@ | |||
50 | struct fib_nh; | 50 | struct fib_nh; |
51 | struct inet_peer; | 51 | struct inet_peer; |
52 | struct rtable { | 52 | struct rtable { |
53 | union { | 53 | struct dst_entry dst; |
54 | struct dst_entry dst; | ||
55 | } u; | ||
56 | 54 | ||
57 | /* Cache lookup keys */ | 55 | /* Cache lookup keys */ |
58 | struct flowi fl; | 56 | struct flowi fl; |
@@ -144,7 +142,7 @@ extern void fib_add_ifaddr(struct in_ifaddr *); | |||
144 | static inline void ip_rt_put(struct rtable * rt) | 142 | static inline void ip_rt_put(struct rtable * rt) |
145 | { | 143 | { |
146 | if (rt) | 144 | if (rt) |
147 | dst_release(&rt->u.dst); | 145 | dst_release(&rt->dst); |
148 | } | 146 | } |
149 | 147 | ||
150 | #define IPTOS_RT_MASK (IPTOS_TOS_MASK & ~3) | 148 | #define IPTOS_RT_MASK (IPTOS_TOS_MASK & ~3) |
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 03ca5d826757..b35301b0c7b6 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
@@ -23,11 +23,17 @@ struct qdisc_rate_table { | |||
23 | }; | 23 | }; |
24 | 24 | ||
25 | enum qdisc_state_t { | 25 | enum qdisc_state_t { |
26 | __QDISC_STATE_RUNNING, | ||
27 | __QDISC_STATE_SCHED, | 26 | __QDISC_STATE_SCHED, |
28 | __QDISC_STATE_DEACTIVATED, | 27 | __QDISC_STATE_DEACTIVATED, |
29 | }; | 28 | }; |
30 | 29 | ||
30 | /* | ||
31 | * following bits are only changed while qdisc lock is held | ||
32 | */ | ||
33 | enum qdisc___state_t { | ||
34 | __QDISC___STATE_RUNNING, | ||
35 | }; | ||
36 | |||
31 | struct qdisc_size_table { | 37 | struct qdisc_size_table { |
32 | struct list_head list; | 38 | struct list_head list; |
33 | struct tc_sizespec szopts; | 39 | struct tc_sizespec szopts; |
@@ -72,10 +78,27 @@ struct Qdisc { | |||
72 | unsigned long state; | 78 | unsigned long state; |
73 | struct sk_buff_head q; | 79 | struct sk_buff_head q; |
74 | struct gnet_stats_basic_packed bstats; | 80 | struct gnet_stats_basic_packed bstats; |
81 | unsigned long __state; | ||
75 | struct gnet_stats_queue qstats; | 82 | struct gnet_stats_queue qstats; |
76 | struct rcu_head rcu_head; | 83 | struct rcu_head rcu_head; |
84 | spinlock_t busylock; | ||
77 | }; | 85 | }; |
78 | 86 | ||
87 | static inline bool qdisc_is_running(struct Qdisc *qdisc) | ||
88 | { | ||
89 | return test_bit(__QDISC___STATE_RUNNING, &qdisc->__state); | ||
90 | } | ||
91 | |||
92 | static inline bool qdisc_run_begin(struct Qdisc *qdisc) | ||
93 | { | ||
94 | return !__test_and_set_bit(__QDISC___STATE_RUNNING, &qdisc->__state); | ||
95 | } | ||
96 | |||
97 | static inline void qdisc_run_end(struct Qdisc *qdisc) | ||
98 | { | ||
99 | __clear_bit(__QDISC___STATE_RUNNING, &qdisc->__state); | ||
100 | } | ||
101 | |||
79 | struct Qdisc_class_ops { | 102 | struct Qdisc_class_ops { |
80 | /* Child qdisc manipulation */ | 103 | /* Child qdisc manipulation */ |
81 | struct netdev_queue * (*select_queue)(struct Qdisc *, struct tcmsg *); | 104 | struct netdev_queue * (*select_queue)(struct Qdisc *, struct tcmsg *); |
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 6173c619913a..f9e7473613bd 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
@@ -443,7 +443,7 @@ struct sctp_signed_cookie { | |||
443 | __u8 signature[SCTP_SECRET_SIZE]; | 443 | __u8 signature[SCTP_SECRET_SIZE]; |
444 | __u32 __pad; /* force sctp_cookie alignment to 64 bits */ | 444 | __u32 __pad; /* force sctp_cookie alignment to 64 bits */ |
445 | struct sctp_cookie c; | 445 | struct sctp_cookie c; |
446 | } __attribute__((packed)); | 446 | } __packed; |
447 | 447 | ||
448 | /* This is another convenience type to allocate memory for address | 448 | /* This is another convenience type to allocate memory for address |
449 | * params for the maximum size and pass such structures around | 449 | * params for the maximum size and pass such structures around |
@@ -488,7 +488,7 @@ typedef struct sctp_sender_hb_info { | |||
488 | union sctp_addr daddr; | 488 | union sctp_addr daddr; |
489 | unsigned long sent_at; | 489 | unsigned long sent_at; |
490 | __u64 hb_nonce; | 490 | __u64 hb_nonce; |
491 | } __attribute__((packed)) sctp_sender_hb_info_t; | 491 | } __packed sctp_sender_hb_info_t; |
492 | 492 | ||
493 | /* | 493 | /* |
494 | * RFC 2960 1.3.2 Sequenced Delivery within Streams | 494 | * RFC 2960 1.3.2 Sequenced Delivery within Streams |
@@ -876,7 +876,7 @@ struct sctp_transport { | |||
876 | 876 | ||
877 | /* Reference counting. */ | 877 | /* Reference counting. */ |
878 | atomic_t refcnt; | 878 | atomic_t refcnt; |
879 | int dead:1, | 879 | __u32 dead:1, |
880 | /* RTO-Pending : A flag used to track if one of the DATA | 880 | /* RTO-Pending : A flag used to track if one of the DATA |
881 | * chunks sent to this address is currently being | 881 | * chunks sent to this address is currently being |
882 | * used to compute a RTT. If this flag is 0, | 882 | * used to compute a RTT. If this flag is 0, |
diff --git a/include/net/sock.h b/include/net/sock.h index 5697caf8cc76..f8acf38f092f 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -312,7 +312,7 @@ struct sock { | |||
312 | void *sk_security; | 312 | void *sk_security; |
313 | #endif | 313 | #endif |
314 | __u32 sk_mark; | 314 | __u32 sk_mark; |
315 | /* XXX 4 bytes hole on 64 bit */ | 315 | u32 sk_classid; |
316 | void (*sk_state_change)(struct sock *sk); | 316 | void (*sk_state_change)(struct sock *sk); |
317 | void (*sk_data_ready)(struct sock *sk, int bytes); | 317 | void (*sk_data_ready)(struct sock *sk, int bytes); |
318 | void (*sk_write_space)(struct sock *sk); | 318 | void (*sk_write_space)(struct sock *sk); |
@@ -1026,15 +1026,23 @@ extern void release_sock(struct sock *sk); | |||
1026 | SINGLE_DEPTH_NESTING) | 1026 | SINGLE_DEPTH_NESTING) |
1027 | #define bh_unlock_sock(__sk) spin_unlock(&((__sk)->sk_lock.slock)) | 1027 | #define bh_unlock_sock(__sk) spin_unlock(&((__sk)->sk_lock.slock)) |
1028 | 1028 | ||
1029 | static inline void lock_sock_bh(struct sock *sk) | 1029 | extern bool lock_sock_fast(struct sock *sk); |
1030 | /** | ||
1031 | * unlock_sock_fast - complement of lock_sock_fast | ||
1032 | * @sk: socket | ||
1033 | * @slow: slow mode | ||
1034 | * | ||
1035 | * fast unlock socket for user context. | ||
1036 | * If slow mode is on, we call regular release_sock() | ||
1037 | */ | ||
1038 | static inline void unlock_sock_fast(struct sock *sk, bool slow) | ||
1030 | { | 1039 | { |
1031 | spin_lock_bh(&sk->sk_lock.slock); | 1040 | if (slow) |
1041 | release_sock(sk); | ||
1042 | else | ||
1043 | spin_unlock_bh(&sk->sk_lock.slock); | ||
1032 | } | 1044 | } |
1033 | 1045 | ||
1034 | static inline void unlock_sock_bh(struct sock *sk) | ||
1035 | { | ||
1036 | spin_unlock_bh(&sk->sk_lock.slock); | ||
1037 | } | ||
1038 | 1046 | ||
1039 | extern struct sock *sk_alloc(struct net *net, int family, | 1047 | extern struct sock *sk_alloc(struct net *net, int family, |
1040 | gfp_t priority, | 1048 | gfp_t priority, |
@@ -1074,6 +1082,14 @@ extern void *sock_kmalloc(struct sock *sk, int size, | |||
1074 | extern void sock_kfree_s(struct sock *sk, void *mem, int size); | 1082 | extern void sock_kfree_s(struct sock *sk, void *mem, int size); |
1075 | extern void sk_send_sigurg(struct sock *sk); | 1083 | extern void sk_send_sigurg(struct sock *sk); |
1076 | 1084 | ||
1085 | #ifdef CONFIG_CGROUPS | ||
1086 | extern void sock_update_classid(struct sock *sk); | ||
1087 | #else | ||
1088 | static inline void sock_update_classid(struct sock *sk) | ||
1089 | { | ||
1090 | } | ||
1091 | #endif | ||
1092 | |||
1077 | /* | 1093 | /* |
1078 | * Functions to fill in entries in struct proto_ops when a protocol | 1094 | * Functions to fill in entries in struct proto_ops when a protocol |
1079 | * does not implement a particular function. | 1095 | * does not implement a particular function. |
@@ -1404,7 +1420,7 @@ static inline int sk_has_allocations(const struct sock *sk) | |||
1404 | 1420 | ||
1405 | /** | 1421 | /** |
1406 | * wq_has_sleeper - check if there are any waiting processes | 1422 | * wq_has_sleeper - check if there are any waiting processes |
1407 | * @sk: struct socket_wq | 1423 | * @wq: struct socket_wq |
1408 | * | 1424 | * |
1409 | * Returns true if socket_wq has waiting processes | 1425 | * Returns true if socket_wq has waiting processes |
1410 | * | 1426 | * |
@@ -1508,20 +1524,7 @@ extern void sk_stop_timer(struct sock *sk, struct timer_list* timer); | |||
1508 | 1524 | ||
1509 | extern int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb); | 1525 | extern int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb); |
1510 | 1526 | ||
1511 | static inline int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb) | 1527 | extern int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb); |
1512 | { | ||
1513 | /* Cast skb->rcvbuf to unsigned... It's pointless, but reduces | ||
1514 | number of warnings when compiling with -W --ANK | ||
1515 | */ | ||
1516 | if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >= | ||
1517 | (unsigned)sk->sk_rcvbuf) | ||
1518 | return -ENOMEM; | ||
1519 | skb_set_owner_r(skb, sk); | ||
1520 | skb_queue_tail(&sk->sk_error_queue, skb); | ||
1521 | if (!sock_flag(sk, SOCK_DEAD)) | ||
1522 | sk->sk_data_ready(sk, skb->len); | ||
1523 | return 0; | ||
1524 | } | ||
1525 | 1528 | ||
1526 | /* | 1529 | /* |
1527 | * Recover an error report and clear atomically | 1530 | * Recover an error report and clear atomically |
@@ -1708,19 +1711,13 @@ static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, int copied_e | |||
1708 | static inline | 1711 | static inline |
1709 | struct net *sock_net(const struct sock *sk) | 1712 | struct net *sock_net(const struct sock *sk) |
1710 | { | 1713 | { |
1711 | #ifdef CONFIG_NET_NS | 1714 | return read_pnet(&sk->sk_net); |
1712 | return sk->sk_net; | ||
1713 | #else | ||
1714 | return &init_net; | ||
1715 | #endif | ||
1716 | } | 1715 | } |
1717 | 1716 | ||
1718 | static inline | 1717 | static inline |
1719 | void sock_net_set(struct sock *sk, struct net *net) | 1718 | void sock_net_set(struct sock *sk, struct net *net) |
1720 | { | 1719 | { |
1721 | #ifdef CONFIG_NET_NS | 1720 | write_pnet(&sk->sk_net, net); |
1722 | sk->sk_net = net; | ||
1723 | #endif | ||
1724 | } | 1721 | } |
1725 | 1722 | ||
1726 | /* | 1723 | /* |
diff --git a/include/net/tcp.h b/include/net/tcp.h index a1449144848a..573166484413 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -1413,7 +1413,8 @@ struct tcp_iter_state { | |||
1413 | sa_family_t family; | 1413 | sa_family_t family; |
1414 | enum tcp_seq_states state; | 1414 | enum tcp_seq_states state; |
1415 | struct sock *syn_wait_sk; | 1415 | struct sock *syn_wait_sk; |
1416 | int bucket, sbucket, num, uid; | 1416 | int bucket, offset, sbucket, num, uid; |
1417 | loff_t last_pos; | ||
1417 | }; | 1418 | }; |
1418 | 1419 | ||
1419 | extern int tcp_proc_register(struct net *net, struct tcp_seq_afinfo *afinfo); | 1420 | extern int tcp_proc_register(struct net *net, struct tcp_seq_afinfo *afinfo); |