diff options
| author | Olof Johansson <olof@lixom.net> | 2012-09-21 22:53:48 -0700 | 
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2012-09-21 22:54:15 -0700 | 
| commit | b536661bb0091b19123fa0c22f7087fd886d7b37 (patch) | |
| tree | e83c4ff9bbfe94155cbc7b25fb3b62b814e79ad7 /net/xfrm/xfrm_replay.c | |
| parent | 20804abdbcfced47b460e5794a685d48225ac754 (diff) | |
| parent | fb997a46626dca2778fa7570bb516d8486f2f837 (diff) | |
| download | olio-linux-3.10-b536661bb0091b19123fa0c22f7087fd886d7b37.tar.xz olio-linux-3.10-b536661bb0091b19123fa0c22f7087fd886d7b37.zip  | |
Merge branch 'v3.7-samsung-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into next/fixes-non-critical
A few non-critical fixes/cleanups for samsung platforms.
* 'v3.7-samsung-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
  ARM: SAMSUNG: Add missing variable declaration in s3c64xx_spi1_set_platdata()
  ARM: S3C24XX: removes unnecessary semicolon
  ARM: S3C24xx: delete double assignment
  ARM: EXYNOS: fix address for EXYNOS4 MDMA1
  ARM: EXYNOS: fixed SYSMMU setup definition to mate parameter name
  + sync to 3.6-rc6
Diffstat (limited to 'net/xfrm/xfrm_replay.c')
| -rw-r--r-- | net/xfrm/xfrm_replay.c | 15 | 
1 files changed, 15 insertions, 0 deletions
diff --git a/net/xfrm/xfrm_replay.c b/net/xfrm/xfrm_replay.c index 2f6d11d04a2..3efb07d3eb2 100644 --- a/net/xfrm/xfrm_replay.c +++ b/net/xfrm/xfrm_replay.c @@ -420,6 +420,18 @@ err:  	return -EINVAL;  } +static int xfrm_replay_recheck_esn(struct xfrm_state *x, +				   struct sk_buff *skb, __be32 net_seq) +{ +	if (unlikely(XFRM_SKB_CB(skb)->seq.input.hi != +		     htonl(xfrm_replay_seqhi(x, net_seq)))) { +			x->stats.replay_window++; +			return -EINVAL; +	} + +	return xfrm_replay_check_esn(x, skb, net_seq); +} +  static void xfrm_replay_advance_esn(struct xfrm_state *x, __be32 net_seq)  {  	unsigned int bitnr, nr, i; @@ -479,6 +491,7 @@ static void xfrm_replay_advance_esn(struct xfrm_state *x, __be32 net_seq)  static struct xfrm_replay xfrm_replay_legacy = {  	.advance	= xfrm_replay_advance,  	.check		= xfrm_replay_check, +	.recheck	= xfrm_replay_check,  	.notify		= xfrm_replay_notify,  	.overflow	= xfrm_replay_overflow,  }; @@ -486,6 +499,7 @@ static struct xfrm_replay xfrm_replay_legacy = {  static struct xfrm_replay xfrm_replay_bmp = {  	.advance	= xfrm_replay_advance_bmp,  	.check		= xfrm_replay_check_bmp, +	.recheck	= xfrm_replay_check_bmp,  	.notify		= xfrm_replay_notify_bmp,  	.overflow	= xfrm_replay_overflow_bmp,  }; @@ -493,6 +507,7 @@ static struct xfrm_replay xfrm_replay_bmp = {  static struct xfrm_replay xfrm_replay_esn = {  	.advance	= xfrm_replay_advance_esn,  	.check		= xfrm_replay_check_esn, +	.recheck	= xfrm_replay_recheck_esn,  	.notify		= xfrm_replay_notify_bmp,  	.overflow	= xfrm_replay_overflow_esn,  };  |