diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-10-31 09:09:32 -0200 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-10-31 09:09:32 -0200 |
commit | 2c699499df3f57e62725fcd56842090fb5e82600 (patch) | |
tree | 5a9d5b3b5df3d98de92f605b7dee0815d03b5fc8 /net/xfrm | |
parent | ddbb67caef2ecd0070c6ebed4d932c51ace1619f (diff) | |
parent | c3b92c8787367a8bb53d57d9789b558f1295cc96 (diff) |
Merge tag 'v3.1'old/cs_2c699499df3f
* tag 'v3.1': (537 commits)
Linux 3.1
x86: Fix S4 regression
dm kcopyd: fix job_pool leak
ARM: S3C24XX: Fix s3c24xx build errors if !CONFIG_PM
crypto: ghash - Avoid null pointer dereference if no key is set
ARM: S5P: fix offset calculation on gpio-interrupt
hwmon: (w83627ehf) Fix negative 8-bit temperature values
mm: fix race between mremap and removing migration entry
sparc: Add alignment flag to PCI expansion resources
fib_rules: fix unresolved_rules counting
r8169: fix wrong eee setting for rlt8111evl
r8169: fix driver shutdown WoL regression.
ehea: Change maintainer to me
[media] videodev: fix a NULL pointer dereference in v4l2_device_release()
intel-iommu: fix superpage support in pfn_to_dma_pte()
intel-iommu: set iommu_superpage on VM domains to lowest common denominator
intel-iommu: fix return value of iommu_unmap() API
MAINTAINERS: Update VT-d entry for drivers/pci -> drivers/iommu move
drm/radeon/kms/atom: fix handling of FB scratch indices
pptp: pptp_rcv_core() misses pskb_may_pull() call
...
Diffstat (limited to 'net/xfrm')
-rw-r--r-- | net/xfrm/xfrm_input.c | 5 | ||||
-rw-r--r-- | net/xfrm/xfrm_policy.c | 10 |
2 files changed, 11 insertions, 4 deletions
diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c index a026b0ef2443..54a0dc2e2f8d 100644 --- a/net/xfrm/xfrm_input.c +++ b/net/xfrm/xfrm_input.c @@ -212,6 +212,11 @@ resume: /* only the first xfrm gets the encap type */ encap_type = 0; + if (async && x->repl->check(x, skb, seq)) { + XFRM_INC_STATS(net, LINUX_MIB_XFRMINSTATESEQERROR); + goto drop_unlock; + } + x->repl->advance(x, seq); x->curlft.bytes += skb->len; diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 94fdcc7f1030..552df27dcf53 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c @@ -1349,14 +1349,16 @@ static inline struct xfrm_dst *xfrm_alloc_dst(struct net *net, int family) BUG(); } xdst = dst_alloc(dst_ops, NULL, 0, 0, 0); - memset(&xdst->u.rt6.rt6i_table, 0, sizeof(*xdst) - sizeof(struct dst_entry)); - xfrm_policy_put_afinfo(afinfo); - if (likely(xdst)) + if (likely(xdst)) { + memset(&xdst->u.rt6.rt6i_table, 0, + sizeof(*xdst) - sizeof(struct dst_entry)); xdst->flo.ops = &xfrm_bundle_fc_ops; - else + } else xdst = ERR_PTR(-ENOBUFS); + xfrm_policy_put_afinfo(afinfo); + return xdst; } |