xfrm: Fix replay window size calculation on initialization
authorSteffen Klassert <steffen.klassert@secunet.com>
Mon, 25 Apr 2011 19:39:24 +0000 (19:39 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 Apr 2011 19:46:03 +0000 (12:46 -0700)
On replay initialization, we compute the size of the replay
buffer to see if the replay window fits into the buffer.
This computation lacks a mutliplication by 8 because we need
the size in bit, not in byte. So we might return an error
even though the replay window would fit into the buffer.
This patch fixes this issue.

Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/xfrm/xfrm_replay.c

index f218385950ca06a3a8b6830c51c29ac370ca2ea0..e8a781422feb46b9c456438c47a3324dc7edcdbf 100644 (file)
@@ -532,7 +532,7 @@ int xfrm_init_replay(struct xfrm_state *x)
 
        if (replay_esn) {
                if (replay_esn->replay_window >
-                   replay_esn->bmp_len * sizeof(__u32))
+                   replay_esn->bmp_len * sizeof(__u32) * 8)
                        return -EINVAL;
 
        if ((x->props.flags & XFRM_STATE_ESN) && x->replay_esn)