diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-03-01 20:27:01 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-03-01 20:27:01 -0500 |
commit | fb7d4045669b3ea0e92cf45963839a9808b7650c (patch) | |
tree | 4f8f2598bf27dd5ff2a096a3cb40ad83f9796c97 | |
parent | 100b425480d3a4c7dff4f99bead457d91ad19caf (diff) | |
parent | a9948a7e15015e7f2cb602190322b8ebb00c54c8 (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.txt | 26 | ||||
-rw-r--r-- | include/linux/socket.h | 2 | ||||
-rw-r--r-- | include/linux/stat.h | 2 | ||||
-rw-r--r-- | include/net/sock.h | 2 | ||||
-rw-r--r-- | net/bridge/br_ioctl.c | 3 | ||||
-rw-r--r-- | net/core/skbuff.c | 2 | ||||
-rw-r--r-- | net/dccp/output.c | 2 | ||||
-rw-r--r-- | net/ipv4/tcp_minisocks.c | 2 | ||||
-rw-r--r-- | net/ipv6/addrconf.c | 2 | ||||
-rw-r--r-- | net/ipv6/anycast.c | 1 | ||||
-rw-r--r-- | net/ipx/ChangeLog | 101 | ||||
-rw-r--r-- | net/ipx/Kconfig | 6 | ||||
-rw-r--r-- | net/netfilter/nfnetlink.c | 3 | ||||
-rw-r--r-- | net/netlabel/netlabel_unlabeled.c | 2 | ||||
-rw-r--r-- | net/xfrm/xfrm_user.c | 8 |
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 | ||
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 | |||
150 | tcp_congestion_control - STRING | 155 | tcp_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 | ||
251 | tcp_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 | |||
257 | tcp_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 | |||
264 | tcp_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 | |||
246 | tcp_orphan_retries - INTEGER | 272 | tcp_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 | ||
1279 | static inline gfp_t gfp_any(void) | 1279 | static 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 | ||
1284 | static inline long sock_rcvtimeo(const struct sock *sk, int noblock) | 1284 | static 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) | |||
2037 | err: | 2037 | err: |
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 | |||
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) | ||
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 | ||
198 | int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo) | 198 | int 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 | ||
175 | list_failure: | 175 | list_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; | ||
1577 | out: | 1577 | out: |
1578 | spin_unlock_bh(&x->lock); | 1578 | spin_unlock_bh(&x->lock); |
1579 | xfrm_state_put(x); | 1579 | xfrm_state_put(x); |