diff options
Diffstat (limited to 'net/ipv6/xfrm6_input.c')
| -rw-r--r-- | net/ipv6/xfrm6_input.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/ipv6/xfrm6_input.c b/net/ipv6/xfrm6_input.c index ec7a96e9fa64..00cfdee18dca 100644 --- a/net/ipv6/xfrm6_input.c +++ b/net/ipv6/xfrm6_input.c | |||
| @@ -32,7 +32,7 @@ int xfrm6_rcv_spi(struct sk_buff *skb, u32 spi) | |||
| 32 | { | 32 | { |
| 33 | int err; | 33 | int err; |
| 34 | u32 seq; | 34 | u32 seq; |
| 35 | struct sec_decap_state xfrm_vec[XFRM_MAX_DEPTH]; | 35 | struct xfrm_state *xfrm_vec[XFRM_MAX_DEPTH]; |
| 36 | struct xfrm_state *x; | 36 | struct xfrm_state *x; |
| 37 | int xfrm_nr = 0; | 37 | int xfrm_nr = 0; |
| 38 | int decaps = 0; | 38 | int decaps = 0; |
| @@ -79,7 +79,7 @@ int xfrm6_rcv_spi(struct sk_buff *skb, u32 spi) | |||
| 79 | 79 | ||
| 80 | spin_unlock(&x->lock); | 80 | spin_unlock(&x->lock); |
| 81 | 81 | ||
| 82 | xfrm_vec[xfrm_nr++].xvec = x; | 82 | xfrm_vec[xfrm_nr++] = x; |
| 83 | 83 | ||
| 84 | if (x->props.mode) { /* XXX */ | 84 | if (x->props.mode) { /* XXX */ |
| 85 | if (nexthdr != IPPROTO_IPV6) | 85 | if (nexthdr != IPPROTO_IPV6) |
| @@ -118,7 +118,8 @@ int xfrm6_rcv_spi(struct sk_buff *skb, u32 spi) | |||
| 118 | if (xfrm_nr + skb->sp->len > XFRM_MAX_DEPTH) | 118 | if (xfrm_nr + skb->sp->len > XFRM_MAX_DEPTH) |
| 119 | goto drop; | 119 | goto drop; |
| 120 | 120 | ||
| 121 | memcpy(skb->sp->x+skb->sp->len, xfrm_vec, xfrm_nr*sizeof(struct sec_decap_state)); | 121 | memcpy(skb->sp->xvec + skb->sp->len, xfrm_vec, |
| 122 | xfrm_nr * sizeof(xfrm_vec[0])); | ||
| 122 | skb->sp->len += xfrm_nr; | 123 | skb->sp->len += xfrm_nr; |
| 123 | skb->ip_summed = CHECKSUM_NONE; | 124 | skb->ip_summed = CHECKSUM_NONE; |
| 124 | 125 | ||
| @@ -149,7 +150,7 @@ drop_unlock: | |||
| 149 | xfrm_state_put(x); | 150 | xfrm_state_put(x); |
| 150 | drop: | 151 | drop: |
| 151 | while (--xfrm_nr >= 0) | 152 | while (--xfrm_nr >= 0) |
| 152 | xfrm_state_put(xfrm_vec[xfrm_nr].xvec); | 153 | xfrm_state_put(xfrm_vec[xfrm_nr]); |
| 153 | kfree_skb(skb); | 154 | kfree_skb(skb); |
| 154 | return -1; | 155 | return -1; |
| 155 | } | 156 | } |
