git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vserver 1.9.5.x5
[linux-2.6.git]
/
net
/
ipv6
/
xfrm6_output.c
diff --git
a/net/ipv6/xfrm6_output.c
b/net/ipv6/xfrm6_output.c
index
40612ec
..
172dd8f
100644
(file)
--- a/
net/ipv6/xfrm6_output.c
+++ b/
net/ipv6/xfrm6_output.c
@@
-79,7
+79,7
@@
static int xfrm6_tunnel_check_size(struct sk_buff *skb)
int mtu, ret = 0;
struct dst_entry *dst = skb->dst;
int mtu, ret = 0;
struct dst_entry *dst = skb->dst;
- mtu = dst_pmtu(dst) -
sizeof(struct ipv6hdr)
;
+ mtu = dst_pmtu(dst) -
dst->header_len - dst->trailer_len
;
if (mtu < IPV6_MIN_MTU)
mtu = IPV6_MIN_MTU;
if (mtu < IPV6_MIN_MTU)
mtu = IPV6_MIN_MTU;
@@
-91,31
+91,29
@@
static int xfrm6_tunnel_check_size(struct sk_buff *skb)
return ret;
}
return ret;
}
-int xfrm6_output(struct sk_buff *
*p
skb)
+int xfrm6_output(struct sk_buff *skb)
{
{
- struct sk_buff *skb = *pskb;
struct dst_entry *dst = skb->dst;
struct xfrm_state *x = dst->xfrm;
int err;
if (skb->ip_summed == CHECKSUM_HW) {
struct dst_entry *dst = skb->dst;
struct xfrm_state *x = dst->xfrm;
int err;
if (skb->ip_summed == CHECKSUM_HW) {
- err = skb_checksum_help(pskb, 0);
- skb = *pskb;
+ err = skb_checksum_help(skb, 0);
if (err)
goto error_nolock;
}
if (err)
goto error_nolock;
}
- spin_lock_bh(&x->lock);
- err = xfrm_state_check(x, skb);
- if (err)
- goto error;
-
if (x->props.mode) {
err = xfrm6_tunnel_check_size(skb);
if (err)
if (x->props.mode) {
err = xfrm6_tunnel_check_size(skb);
if (err)
- goto error;
+ goto error
_nolock
;
}
}
+ spin_lock_bh(&x->lock);
+ err = xfrm_state_check(x, skb);
+ if (err)
+ goto error;
+
xfrm6_encap(skb);
err = x->type->output(skb);
xfrm6_encap(skb);
err = x->type->output(skb);