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.

+43 -121
+26
Documentation/networking/ip-sysctl.txt
··· 147 More congestion control algorithms may be available as modules, 148 but not loaded. 149 150 tcp_congestion_control - STRING 151 Set the congestion control algorithm to be used for new 152 connections. The algorithm "reno" is always available, but ··· 247 248 Defaults are calculated at boot time from amount of available 249 memory. 250 251 tcp_orphan_retries - INTEGER 252 How may times to retry before killing TCP connection, closed
··· 147 More congestion control algorithms may be available as modules, 148 but not loaded. 149 150 + tcp_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 + 155 tcp_congestion_control - STRING 156 Set the congestion control algorithm to be used for new 157 connections. The algorithm "reno" is always available, but ··· 242 243 Defaults are calculated at boot time from amount of available 244 memory. 245 + 246 + tcp_moderate_rcvbuf - BOOLEAN 247 + If set, TCP performs receive buffer autotuning, attempting to 248 + automatically size the buffer (no greater than tcp_rmem[2]) to 249 + match the size required by the path for full throughput. Enabled by 250 + default. 251 + 252 + tcp_mtu_probing - INTEGER 253 + Controls TCP Packetization-Layer Path MTU Discovery. Takes three 254 + values: 255 + 0 - Disabled 256 + 1 - Disabled by default, enabled when an ICMP black hole detected 257 + 2 - Always enabled, use initial MSS of tcp_base_mss. 258 + 259 + tcp_no_metrics_save - BOOLEAN 260 + By default, TCP saves various connection metrics in the route cache 261 + when the connection closes, so that connections established in the 262 + near future can use these to set initial conditions. Usually, this 263 + increases overall performance, but may sometimes cause performance 264 + degredation. If set, TCP will not cache metrics on closing 265 + connections. 266 267 tcp_orphan_retries - INTEGER 268 How may times to retry before killing TCP connection, closed
+1 -1
include/linux/socket.h
··· 16 /* _SS_MAXSIZE value minus size of ss_family */ 17 } __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */ 18 19 - #ifdef __KERNEL__ 20 21 #include <asm/socket.h> /* arch-dependent defines */ 22 #include <linux/sockios.h> /* the SIOCxxx I/O controls */
··· 16 /* _SS_MAXSIZE value minus size of ss_family */ 17 } __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */ 18 19 + #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) 20 21 #include <asm/socket.h> /* arch-dependent defines */ 22 #include <linux/sockios.h> /* the SIOCxxx I/O controls */
+1 -1
include/linux/stat.h
··· 7 8 #endif 9 10 - #ifdef __KERNEL__ 11 12 #define S_IFMT 00170000 13 #define S_IFSOCK 0140000
··· 7 8 #endif 9 10 + #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) 11 12 #define S_IFMT 00170000 13 #define S_IFSOCK 0140000
+1 -1
include/net/sock.h
··· 1278 1279 static inline gfp_t gfp_any(void) 1280 { 1281 - return in_softirq() ? GFP_ATOMIC : GFP_KERNEL; 1282 } 1283 1284 static inline long sock_rcvtimeo(const struct sock *sk, int noblock)
··· 1278 1279 static inline gfp_t gfp_any(void) 1280 { 1281 + return in_atomic() ? GFP_ATOMIC : GFP_KERNEL; 1282 } 1283 1284 static inline long sock_rcvtimeo(const struct sock *sk, int noblock)
+1 -2
net/bridge/br_ioctl.c
··· 291 if (!capable(CAP_NET_ADMIN)) 292 return -EPERM; 293 294 - spin_lock_bh(&br->lock); 295 if ((p = br_get_port(br, args[1])) == NULL) 296 ret = -EINVAL; 297 else 298 br_stp_set_path_cost(p, args[2]); 299 - spin_unlock_bh(&br->lock); 300 return ret; 301 } 302
··· 291 if (!capable(CAP_NET_ADMIN)) 292 return -EPERM; 293 294 if ((p = br_get_port(br, args[1])) == NULL) 295 ret = -EINVAL; 296 else 297 br_stp_set_path_cost(p, args[2]); 298 + 299 return ret; 300 } 301
+1 -1
net/core/skbuff.c
··· 2037 err: 2038 while ((skb = segs)) { 2039 segs = skb->next; 2040 - kfree(skb); 2041 } 2042 return ERR_PTR(err); 2043 }
··· 2037 err: 2038 while ((skb = segs)) { 2039 segs = skb->next; 2040 + kfree_skb(skb); 2041 } 2042 return ERR_PTR(err); 2043 }
+1 -1
net/dccp/output.c
··· 269 err); 270 } else { 271 dccp_pr_debug("packet discarded\n"); 272 - kfree(skb); 273 } 274 } 275 }
··· 269 err); 270 } else { 271 dccp_pr_debug("packet discarded\n"); 272 + kfree_skb(skb); 273 } 274 } 275 }
+1 -1
net/ipv4/tcp_minisocks.c
··· 381 if (newsk != NULL) { 382 const struct inet_request_sock *ireq = inet_rsk(req); 383 struct tcp_request_sock *treq = tcp_rsk(req); 384 - struct inet_connection_sock *newicsk = inet_csk(sk); 385 struct tcp_sock *newtp; 386 387 /* Now setup tcp_sock */
··· 381 if (newsk != NULL) { 382 const struct inet_request_sock *ireq = inet_rsk(req); 383 struct tcp_request_sock *treq = tcp_rsk(req); 384 + struct inet_connection_sock *newicsk = inet_csk(newsk); 385 struct tcp_sock *newtp; 386 387 /* Now setup tcp_sock */
+2
net/ipv6/addrconf.c
··· 400 ipv6_dev_mc_dec(dev, &addr); 401 } 402 for (ifa=idev->addr_list; ifa; ifa=ifa->if_next) { 403 if (idev->cnf.forwarding) 404 addrconf_join_anycast(ifa); 405 else
··· 400 ipv6_dev_mc_dec(dev, &addr); 401 } 402 for (ifa=idev->addr_list; ifa; ifa=ifa->if_next) { 403 + if (ifa->flags&IFA_F_TENTATIVE) 404 + continue; 405 if (idev->cnf.forwarding) 406 addrconf_join_anycast(ifa); 407 else
+1
net/ipv6/anycast.c
··· 461 break; 462 } 463 read_unlock_bh(&idev->lock); 464 } 465 return im; 466 }
··· 461 break; 462 } 463 read_unlock_bh(&idev->lock); 464 + in6_dev_put(idev); 465 } 466 return im; 467 }
-101
net/ipx/ChangeLog
··· 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 - 94 - Other 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)
···
+1 -5
net/ipx/Kconfig
··· 16 support", below. 17 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 20 - Linux (see "SPX networking", below). 21 22 To turn your Linux box into a fully featured NetWare file server and 23 IPX router, say Y here and fetch either lwared from ··· 24 mars_nwe from <ftp://www.compu-art.de/mars_nwe/>. For more 25 information, read the IPX-HOWTO available from 26 <http://www.tldp.org/docs.html#howto>. 27 - 28 - General information about how to connect Linux, Windows machines and 29 - Macs is on the WWW at <http://www.eats.com/linux_mac_win.html>. 30 31 The IPX driver would enlarge your kernel by about 16 KB. To compile 32 this driver as a module, choose M here: the module will be called ipx.
··· 16 support", below. 17 18 IPX is similar in scope to IP, while SPX, which runs on top of IPX, 19 + is similar to TCP. 20 21 To turn your Linux box into a fully featured NetWare file server and 22 IPX router, say Y here and fetch either lwared from ··· 25 mars_nwe from <ftp://www.compu-art.de/mars_nwe/>. For more 26 information, read the IPX-HOWTO available from 27 <http://www.tldp.org/docs.html#howto>. 28 29 The IPX driver would enlarge your kernel by about 16 KB. To compile 30 this driver as a module, choose M here: the module will be called ipx.
+1 -2
net/netfilter/nfnetlink.c
··· 197 198 int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo) 199 { 200 - gfp_t allocation = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL; 201 int err = 0; 202 203 NETLINK_CB(skb).dst_group = group; 204 if (echo) 205 atomic_inc(&skb->users); 206 - netlink_broadcast(nfnl, skb, pid, group, allocation); 207 if (echo) 208 err = netlink_unicast(nfnl, skb, pid, MSG_DONTWAIT); 209
··· 197 198 int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo) 199 { 200 int err = 0; 201 202 NETLINK_CB(skb).dst_group = group; 203 if (echo) 204 atomic_inc(&skb->users); 205 + netlink_broadcast(nfnl, skb, pid, group, gfp_any()); 206 if (echo) 207 err = netlink_unicast(nfnl, skb, pid, MSG_DONTWAIT); 208
+1 -1
net/netlabel/netlabel_unlabeled.c
··· 173 return 0; 174 175 list_failure: 176 - kfree(ans_skb); 177 return ret_val; 178 } 179
··· 173 return 0; 174 175 list_failure: 176 + kfree_skb(ans_skb); 177 return ret_val; 178 } 179
+4 -4
net/xfrm/xfrm_user.c
··· 1401 1402 x = xfrm_state_lookup(&id->daddr, id->spi, id->proto, id->family); 1403 if (x == NULL) { 1404 - kfree(r_skb); 1405 return -ESRCH; 1406 } 1407 ··· 1557 struct xfrm_usersa_info *p = &ue->state; 1558 1559 x = xfrm_state_lookup(&p->id.daddr, p->id.spi, p->id.proto, p->family); 1560 - err = -ENOENT; 1561 1562 if (x == NULL) 1563 return err; 1564 1565 - err = -EINVAL; 1566 - 1567 spin_lock_bh(&x->lock); 1568 if (x->km.state != XFRM_STATE_VALID) 1569 goto out; 1570 km_state_expired(x, ue->hard, current->pid); ··· 1573 xfrm_audit_log(NETLINK_CB(skb).loginuid, NETLINK_CB(skb).sid, 1574 AUDIT_MAC_IPSEC_DELSA, 1, NULL, x); 1575 } 1576 out: 1577 spin_unlock_bh(&x->lock); 1578 xfrm_state_put(x);
··· 1401 1402 x = xfrm_state_lookup(&id->daddr, id->spi, id->proto, id->family); 1403 if (x == NULL) { 1404 + kfree_skb(r_skb); 1405 return -ESRCH; 1406 } 1407 ··· 1557 struct xfrm_usersa_info *p = &ue->state; 1558 1559 x = xfrm_state_lookup(&p->id.daddr, p->id.spi, p->id.proto, p->family); 1560 1561 + err = -ENOENT; 1562 if (x == NULL) 1563 return err; 1564 1565 spin_lock_bh(&x->lock); 1566 + err = -EINVAL; 1567 if (x->km.state != XFRM_STATE_VALID) 1568 goto out; 1569 km_state_expired(x, ue->hard, current->pid); ··· 1574 xfrm_audit_log(NETLINK_CB(skb).loginuid, NETLINK_CB(skb).sid, 1575 AUDIT_MAC_IPSEC_DELSA, 1, NULL, x); 1576 } 1577 + err = 0; 1578 out: 1579 spin_unlock_bh(&x->lock); 1580 xfrm_state_put(x);