aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-01 20:27:01 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-01 20:27:01 -0500
commitfb7d4045669b3ea0e92cf45963839a9808b7650c (patch)
tree4f8f2598bf27dd5ff2a096a3cb40ad83f9796c97
parent100b425480d3a4c7dff4f99bead457d91ad19caf (diff)
parenta9948a7e15015e7f2cb602190322b8ebb00c54c8 (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: [TCP]: Fix minisock tcp_create_openreq_child() typo. [TCP]: Document several sysctls. [NET]: Fix kfree(skb) [NET]: Handle disabled preemption in gfp_any() [BRIDGE]: Fix locking of set path cost. [IPV6]: /proc/net/anycast6 unbalanced inet6_dev refcnt [IPX]: Remove ancient changelog [IPX]: Remove outdated information from Kconfig [NET]: Revert socket.h/stat.h ifdef hacks. [IPV6]: anycast refcnt fix [XFRM] xfrm_user: Fix return values of xfrm_add_sa_expire.
-rw-r--r--Documentation/networking/ip-sysctl.txt26
-rw-r--r--include/linux/socket.h2
-rw-r--r--include/linux/stat.h2
-rw-r--r--include/net/sock.h2
-rw-r--r--net/bridge/br_ioctl.c3
-rw-r--r--net/core/skbuff.c2
-rw-r--r--net/dccp/output.c2
-rw-r--r--net/ipv4/tcp_minisocks.c2
-rw-r--r--net/ipv6/addrconf.c2
-rw-r--r--net/ipv6/anycast.c1
-rw-r--r--net/ipx/ChangeLog101
-rw-r--r--net/ipx/Kconfig6
-rw-r--r--net/netfilter/nfnetlink.c3
-rw-r--r--net/netlabel/netlabel_unlabeled.c2
-rw-r--r--net/xfrm/xfrm_user.c8
15 files changed, 43 insertions, 121 deletions
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index a0f6842368c3..d3aae1f9b4c1 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -147,6 +147,11 @@ tcp_available_congestion_control - STRING
147 More congestion control algorithms may be available as modules, 147 More congestion control algorithms may be available as modules,
148 but not loaded. 148 but not loaded.
149 149
150tcp_base_mss - INTEGER
151 The initial value of search_low to be used by Packetization Layer
152 Path MTU Discovery (MTU probing). If MTU probing is enabled,
153 this is the inital MSS used by the connection.
154
150tcp_congestion_control - STRING 155tcp_congestion_control - STRING
151 Set the congestion control algorithm to be used for new 156 Set the congestion control algorithm to be used for new
152 connections. The algorithm "reno" is always available, but 157 connections. The algorithm "reno" is always available, but
@@ -243,6 +248,27 @@ tcp_mem - vector of 3 INTEGERs: min, pressure, max
243 Defaults are calculated at boot time from amount of available 248 Defaults are calculated at boot time from amount of available
244 memory. 249 memory.
245 250
251tcp_moderate_rcvbuf - BOOLEAN
252 If set, TCP performs receive buffer autotuning, attempting to
253 automatically size the buffer (no greater than tcp_rmem[2]) to
254 match the size required by the path for full throughput. Enabled by
255 default.
256
257tcp_mtu_probing - INTEGER
258 Controls TCP Packetization-Layer Path MTU Discovery. Takes three
259 values:
260 0 - Disabled
261 1 - Disabled by default, enabled when an ICMP black hole detected
262 2 - Always enabled, use initial MSS of tcp_base_mss.
263
264tcp_no_metrics_save - BOOLEAN
265 By default, TCP saves various connection metrics in the route cache
266 when the connection closes, so that connections established in the
267 near future can use these to set initial conditions. Usually, this
268 increases overall performance, but may sometimes cause performance
269 degredation. If set, TCP will not cache metrics on closing
270 connections.
271
246tcp_orphan_retries - INTEGER 272tcp_orphan_retries - INTEGER
247 How may times to retry before killing TCP connection, closed 273 How may times to retry before killing TCP connection, closed
248 by our side. Default value 7 corresponds to ~50sec-16min 274 by our side. Default value 7 corresponds to ~50sec-16min
diff --git a/include/linux/socket.h b/include/linux/socket.h
index 28157a36e6cc..fcd35a210e7f 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -16,7 +16,7 @@ struct __kernel_sockaddr_storage {
16 /* _SS_MAXSIZE value minus size of ss_family */ 16 /* _SS_MAXSIZE value minus size of ss_family */
17} __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */ 17} __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */
18 18
19#ifdef __KERNEL__ 19#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
20 20
21#include <asm/socket.h> /* arch-dependent defines */ 21#include <asm/socket.h> /* arch-dependent defines */
22#include <linux/sockios.h> /* the SIOCxxx I/O controls */ 22#include <linux/sockios.h> /* the SIOCxxx I/O controls */
diff --git a/include/linux/stat.h b/include/linux/stat.h
index 4f8539ccff6c..679ef0d70b6b 100644
--- a/include/linux/stat.h
+++ b/include/linux/stat.h
@@ -7,7 +7,7 @@
7 7
8#endif 8#endif
9 9
10#ifdef __KERNEL__ 10#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
11 11
12#define S_IFMT 00170000 12#define S_IFMT 00170000
13#define S_IFSOCK 0140000 13#define S_IFSOCK 0140000
diff --git a/include/net/sock.h b/include/net/sock.h
index 03684e702d13..2c7d60ca3548 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -1278,7 +1278,7 @@ static inline int sock_writeable(const struct sock *sk)
1278 1278
1279static inline gfp_t gfp_any(void) 1279static inline gfp_t gfp_any(void)
1280{ 1280{
1281 return in_softirq() ? GFP_ATOMIC : GFP_KERNEL; 1281 return in_atomic() ? GFP_ATOMIC : GFP_KERNEL;
1282} 1282}
1283 1283
1284static inline long sock_rcvtimeo(const struct sock *sk, int noblock) 1284static inline long sock_rcvtimeo(const struct sock *sk, int noblock)
diff --git a/net/bridge/br_ioctl.c b/net/bridge/br_ioctl.c
index 3ab153d3c508..147015fe5c75 100644
--- a/net/bridge/br_ioctl.c
+++ b/net/bridge/br_ioctl.c
@@ -291,12 +291,11 @@ static int old_dev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
291 if (!capable(CAP_NET_ADMIN)) 291 if (!capable(CAP_NET_ADMIN))
292 return -EPERM; 292 return -EPERM;
293 293
294 spin_lock_bh(&br->lock);
295 if ((p = br_get_port(br, args[1])) == NULL) 294 if ((p = br_get_port(br, args[1])) == NULL)
296 ret = -EINVAL; 295 ret = -EINVAL;
297 else 296 else
298 br_stp_set_path_cost(p, args[2]); 297 br_stp_set_path_cost(p, args[2]);
299 spin_unlock_bh(&br->lock); 298
300 return ret; 299 return ret;
301 } 300 }
302 301
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index f89ff151cfab..820761f9eeef 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2037,7 +2037,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
2037err: 2037err:
2038 while ((skb = segs)) { 2038 while ((skb = segs)) {
2039 segs = skb->next; 2039 segs = skb->next;
2040 kfree(skb); 2040 kfree_skb(skb);
2041 } 2041 }
2042 return ERR_PTR(err); 2042 return ERR_PTR(err);
2043} 2043}
diff --git a/net/dccp/output.c b/net/dccp/output.c
index f5c6aca1dfa4..3282f2f2291b 100644
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -269,7 +269,7 @@ void dccp_write_xmit(struct sock *sk, int block)
269 err); 269 err);
270 } else { 270 } else {
271 dccp_pr_debug("packet discarded\n"); 271 dccp_pr_debug("packet discarded\n");
272 kfree(skb); 272 kfree_skb(skb);
273 } 273 }
274 } 274 }
275} 275}
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
index 30b1e520ad94..6b5c64f3c925 100644
--- a/net/ipv4/tcp_minisocks.c
+++ b/net/ipv4/tcp_minisocks.c
@@ -381,7 +381,7 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
381 if (newsk != NULL) { 381 if (newsk != NULL) {
382 const struct inet_request_sock *ireq = inet_rsk(req); 382 const struct inet_request_sock *ireq = inet_rsk(req);
383 struct tcp_request_sock *treq = tcp_rsk(req); 383 struct tcp_request_sock *treq = tcp_rsk(req);
384 struct inet_connection_sock *newicsk = inet_csk(sk); 384 struct inet_connection_sock *newicsk = inet_csk(newsk);
385 struct tcp_sock *newtp; 385 struct tcp_sock *newtp;
386 386
387 /* Now setup tcp_sock */ 387 /* Now setup tcp_sock */
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index f6ac65d36559..e16f1bba5dff 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -400,6 +400,8 @@ static void dev_forward_change(struct inet6_dev *idev)
400 ipv6_dev_mc_dec(dev, &addr); 400 ipv6_dev_mc_dec(dev, &addr);
401 } 401 }
402 for (ifa=idev->addr_list; ifa; ifa=ifa->if_next) { 402 for (ifa=idev->addr_list; ifa; ifa=ifa->if_next) {
403 if (ifa->flags&IFA_F_TENTATIVE)
404 continue;
403 if (idev->cnf.forwarding) 405 if (idev->cnf.forwarding)
404 addrconf_join_anycast(ifa); 406 addrconf_join_anycast(ifa);
405 else 407 else
diff --git a/net/ipv6/anycast.c b/net/ipv6/anycast.c
index e5ef5979ade4..09117d63256f 100644
--- a/net/ipv6/anycast.c
+++ b/net/ipv6/anycast.c
@@ -461,6 +461,7 @@ static inline struct ifacaddr6 *ac6_get_first(struct seq_file *seq)
461 break; 461 break;
462 } 462 }
463 read_unlock_bh(&idev->lock); 463 read_unlock_bh(&idev->lock);
464 in6_dev_put(idev);
464 } 465 }
465 return im; 466 return im;
466} 467}
diff --git a/net/ipx/ChangeLog b/net/ipx/ChangeLog
deleted file mode 100644
index 3b29763751a3..000000000000
--- a/net/ipx/ChangeLog
+++ /dev/null
@@ -1,101 +0,0 @@
1 Revision 0.21: Uses the new generic socket option code.
2
3 Revision 0.22: Gcc clean ups and drop out device registration. Use the
4 new multi-protocol edition of hard_header
5
6 Revision 0.23: IPX /proc by Mark Evans. Adding a route will
7 will overwrite any existing route to the same network.
8
9 Revision 0.24: Supports new /proc with no 4K limit
10
11 Revision 0.25: Add ephemeral sockets, passive local network
12 identification, support for local net 0 and
13 multiple datalinks <Greg Page>
14
15 Revision 0.26: Device drop kills IPX routes via it. (needed for module)
16
17 Revision 0.27: Autobind <Mark Evans>
18
19 Revision 0.28: Small fix for multiple local networks <Thomas Winder>
20
21 Revision 0.29: Assorted major errors removed <Mark Evans>
22 Small correction to promisc mode error fix <Alan Cox>
23 Asynchronous I/O support. Changed to use notifiers
24 and the newer packet_type stuff. Assorted major
25 fixes <Alejandro Liu>
26
27 Revision 0.30: Moved to net/ipx/... <Alan Cox>
28 Don't set address length on recvfrom that errors.
29 Incorrect verify_area.
30
31 Revision 0.31: New sk_buffs. This still needs a lot of
32 testing. <Alan Cox>
33
34 Revision 0.32: Using sock_alloc_send_skb, firewall hooks. <Alan Cox>
35 Supports sendmsg/recvmsg
36
37 Revision 0.33: Internal network support, routing changes, uses a
38 protocol private area for ipx data.
39
40 Revision 0.34: Module support. <Jim Freeman>
41
42 Revision 0.35: Checksum support. <Neil Turton>, hooked in by <Alan Cox>
43 Handles WIN95 discovery packets <Volker Lendecke>
44
45 Revision 0.36: Internal bump up for 2.1
46
47 Revision 0.37: Began adding POSIXisms.
48
49 Revision 0.38: Asynchronous socket stuff made current.
50
51 Revision 0.39: SPX interfaces
52
53 Revision 0.40: Tiny SIOCGSTAMP fix (chris@cybernet.co.nz)
54
55 Revision 0.41: 802.2TR removed (p.norton@computer.org)
56 Fixed connecting to primary net,
57 Automatic binding on send & receive,
58 Martijn van Oosterhout <kleptogimp@geocities.com>
59
60 Revision 042: Multithreading - use spinlocks and refcounting to
61 protect some structures: ipx_interface sock list, list
62 of ipx interfaces, etc.
63 Bugfixes - do refcounting on net_devices, check function
64 results, etc. Thanks to davem and freitag for
65 suggestions and guidance.
66 Arnaldo Carvalho de Melo <acme@conectiva.com.br>,
67 November, 2000
68
69 Revision 043: Shared SKBs, don't mangle packets, some cleanups
70 Arnaldo Carvalho de Melo <acme@conectiva.com.br>,
71 December, 2000
72
73 Revision 044: Call ipxitf_hold on NETDEV_UP - acme
74
75 Revision 045: fix PPROP routing bug - acme
76
77 Revision 046: Further fixes to PPROP, ipxitf_create_internal was
78 doing an unneeded MOD_INC_USE_COUNT, implement
79 sysctl for ipx_pprop_broacasting, fix the ipx sysctl
80 handling, making it dynamic, some cleanups, thanks to
81 Petr Vandrovec for review and good suggestions. (acme)
82
83 Revision 047: Cleanups, CodingStyle changes, move the ncp connection
84 hack out of line - acme
85
86 Revision 048: Use sk->protinfo to store the pointer to IPX private
87 area, remove af_ipx from sk->protinfo and move ipx_opt
88 to include/net/ipx.h, use IPX_SK like DecNET, etc - acme
89
90 Revision 049: SPX support dropped, see comment in ipx_create - acme
91
92 Revision 050: Use seq_file for proc stuff, moving it to ipx_proc.c - acme
93
94Other fixes:
95
96 Protect the module by a MOD_INC_USE_COUNT/MOD_DEC_USE_COUNT pair. Also, now
97 usage count is managed this way:
98 -Count one if the auto_interface mode is on
99 -Count one per configured interface
100
101 Jacques Gelinas (jacques@solucorp.qc.ca)
diff --git a/net/ipx/Kconfig b/net/ipx/Kconfig
index 980a826f5d02..e9ad0062fbb6 100644
--- a/net/ipx/Kconfig
+++ b/net/ipx/Kconfig
@@ -16,8 +16,7 @@ config IPX
16 support", below. 16 support", below.
17 17
18 IPX is similar in scope to IP, while SPX, which runs on top of IPX, 18 IPX is similar in scope to IP, while SPX, which runs on top of IPX,
19 is similar to TCP. There is also experimental support for SPX in 19 is similar to TCP.
20 Linux (see "SPX networking", below).
21 20
22 To turn your Linux box into a fully featured NetWare file server and 21 To turn your Linux box into a fully featured NetWare file server and
23 IPX router, say Y here and fetch either lwared from 22 IPX router, say Y here and fetch either lwared from
@@ -26,9 +25,6 @@ config IPX
26 information, read the IPX-HOWTO available from 25 information, read the IPX-HOWTO available from
27 <http://www.tldp.org/docs.html#howto>. 26 <http://www.tldp.org/docs.html#howto>.
28 27
29 General information about how to connect Linux, Windows machines and
30 Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>.
31
32 The IPX driver would enlarge your kernel by about 16 KB. To compile 28 The IPX driver would enlarge your kernel by about 16 KB. To compile
33 this driver as a module, choose M here: the module will be called ipx. 29 this driver as a module, choose M here: the module will be called ipx.
34 Unless you want to integrate your Linux box with a local Novell 30 Unless you want to integrate your Linux box with a local Novell
diff --git a/net/netfilter/nfnetlink.c b/net/netfilter/nfnetlink.c
index 11d504d0ac72..bf23e489e4cd 100644
--- a/net/netfilter/nfnetlink.c
+++ b/net/netfilter/nfnetlink.c
@@ -197,13 +197,12 @@ EXPORT_SYMBOL_GPL(nfnetlink_has_listeners);
197 197
198int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo) 198int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo)
199{ 199{
200 gfp_t allocation = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL;
201 int err = 0; 200 int err = 0;
202 201
203 NETLINK_CB(skb).dst_group = group; 202 NETLINK_CB(skb).dst_group = group;
204 if (echo) 203 if (echo)
205 atomic_inc(&skb->users); 204 atomic_inc(&skb->users);
206 netlink_broadcast(nfnl, skb, pid, group, allocation); 205 netlink_broadcast(nfnl, skb, pid, group, gfp_any());
207 if (echo) 206 if (echo)
208 err = netlink_unicast(nfnl, skb, pid, MSG_DONTWAIT); 207 err = netlink_unicast(nfnl, skb, pid, MSG_DONTWAIT);
209 208
diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c
index 5bc37181662e..b931edee4b8b 100644
--- a/net/netlabel/netlabel_unlabeled.c
+++ b/net/netlabel/netlabel_unlabeled.c
@@ -173,7 +173,7 @@ static int netlbl_unlabel_list(struct sk_buff *skb, struct genl_info *info)
173 return 0; 173 return 0;
174 174
175list_failure: 175list_failure:
176 kfree(ans_skb); 176 kfree_skb(ans_skb);
177 return ret_val; 177 return ret_val;
178} 178}
179 179
diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c
index 256745321611..956cfe0ff7f8 100644
--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -1401,7 +1401,7 @@ static int xfrm_get_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
1401 1401
1402 x = xfrm_state_lookup(&id->daddr, id->spi, id->proto, id->family); 1402 x = xfrm_state_lookup(&id->daddr, id->spi, id->proto, id->family);
1403 if (x == NULL) { 1403 if (x == NULL) {
1404 kfree(r_skb); 1404 kfree_skb(r_skb);
1405 return -ESRCH; 1405 return -ESRCH;
1406 } 1406 }
1407 1407
@@ -1557,14 +1557,13 @@ static int xfrm_add_sa_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
1557 struct xfrm_usersa_info *p = &ue->state; 1557 struct xfrm_usersa_info *p = &ue->state;
1558 1558
1559 x = xfrm_state_lookup(&p->id.daddr, p->id.spi, p->id.proto, p->family); 1559 x = xfrm_state_lookup(&p->id.daddr, p->id.spi, p->id.proto, p->family);
1560 err = -ENOENT;
1561 1560
1561 err = -ENOENT;
1562 if (x == NULL) 1562 if (x == NULL)
1563 return err; 1563 return err;
1564 1564
1565 err = -EINVAL;
1566
1567 spin_lock_bh(&x->lock); 1565 spin_lock_bh(&x->lock);
1566 err = -EINVAL;
1568 if (x->km.state != XFRM_STATE_VALID) 1567 if (x->km.state != XFRM_STATE_VALID)
1569 goto out; 1568 goto out;
1570 km_state_expired(x, ue->hard, current->pid); 1569 km_state_expired(x, ue->hard, current->pid);
@@ -1574,6 +1573,7 @@ static int xfrm_add_sa_expire(struct sk_buff *skb, struct nlmsghdr *nlh,
1574 xfrm_audit_log(NETLINK_CB(skb).loginuid, NETLINK_CB(skb).sid, 1573 xfrm_audit_log(NETLINK_CB(skb).loginuid, NETLINK_CB(skb).sid,
1575 AUDIT_MAC_IPSEC_DELSA, 1, NULL, x); 1574 AUDIT_MAC_IPSEC_DELSA, 1, NULL, x);
1576 } 1575 }
1576 err = 0;
1577out: 1577out:
1578 spin_unlock_bh(&x->lock); 1578 spin_unlock_bh(&x->lock);
1579 xfrm_state_put(x); 1579 xfrm_state_put(x);