Commit e3ac104d authored by Mathias Krause's avatar Mathias Krause Committed by David S. Miller

xfrm_user: don't copy esn replay window twice for new states

The ESN replay window was already fully initialized in
xfrm_alloc_replay_state_esn(). No need to copy it again.

Cc: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
Acked-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ecd79187
...@@ -461,10 +461,11 @@ static void copy_from_user_state(struct xfrm_state *x, struct xfrm_usersa_info * ...@@ -461,10 +461,11 @@ static void copy_from_user_state(struct xfrm_state *x, struct xfrm_usersa_info *
* somehow made shareable and move it to xfrm_state.c - JHS * somehow made shareable and move it to xfrm_state.c - JHS
* *
*/ */
static void xfrm_update_ae_params(struct xfrm_state *x, struct nlattr **attrs) static void xfrm_update_ae_params(struct xfrm_state *x, struct nlattr **attrs,
int update_esn)
{ {
struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; struct nlattr *rp = attrs[XFRMA_REPLAY_VAL];
struct nlattr *re = attrs[XFRMA_REPLAY_ESN_VAL]; struct nlattr *re = update_esn ? attrs[XFRMA_REPLAY_ESN_VAL] : NULL;
struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; struct nlattr *lt = attrs[XFRMA_LTIME_VAL];
struct nlattr *et = attrs[XFRMA_ETIMER_THRESH]; struct nlattr *et = attrs[XFRMA_ETIMER_THRESH];
struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH]; struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH];
...@@ -574,7 +575,7 @@ static struct xfrm_state *xfrm_state_construct(struct net *net, ...@@ -574,7 +575,7 @@ static struct xfrm_state *xfrm_state_construct(struct net *net,
goto error; goto error;
/* override default values from above */ /* override default values from above */
xfrm_update_ae_params(x, attrs); xfrm_update_ae_params(x, attrs, 0);
return x; return x;
...@@ -1848,7 +1849,7 @@ static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh, ...@@ -1848,7 +1849,7 @@ static int xfrm_new_ae(struct sk_buff *skb, struct nlmsghdr *nlh,
goto out; goto out;
spin_lock_bh(&x->lock); spin_lock_bh(&x->lock);
xfrm_update_ae_params(x, attrs); xfrm_update_ae_params(x, attrs, 1);
spin_unlock_bh(&x->lock); spin_unlock_bh(&x->lock);
c.event = nlh->nlmsg_type; c.event = nlh->nlmsg_type;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment