diff mbox series

[v2,4/4] xfrm: clone whole liftime_cur structure in xfrm_do_migrate

Message ID 20200826194026.GA15058@moon.secunet.de
State Awaiting Upstream
Delegated to: David Miller
Headers show
Series [1/3] xfrm: clone XFRMA_SET_MARK during xfrm_do_migrate | expand

Commit Message

Antony Antony Aug. 26, 2020, 7:40 p.m. UTC
When we clone state only add_time was cloned. It missed values like
bytes, packets.  Now clone the all members of the structure.

Fixes: 80c9abaabf42 ("[XFRM]: Extension for dynamic update of endpoint address(es)")
Signed-off-by: Antony Antony <antony.antony@secunet.com>
---
 net/xfrm/xfrm_state.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Steffen Klassert Aug. 28, 2020, 5:20 a.m. UTC | #1
On Wed, Aug 26, 2020 at 09:40:40PM +0200, Antony Antony wrote:
> When we clone state only add_time was cloned. It missed values like
> bytes, packets.  Now clone the all members of the structure.
> 
> Fixes: 80c9abaabf42 ("[XFRM]: Extension for dynamic update of endpoint address(es)")
> Signed-off-by: Antony Antony <antony.antony@secunet.com>
> ---
>  net/xfrm/xfrm_state.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
> index 16988303aed6..64eb4a6fcfc2 100644
> --- a/net/xfrm/xfrm_state.c
> +++ b/net/xfrm/xfrm_state.c
> @@ -1550,7 +1550,7 @@ static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig,
>  	x->tfcpad = orig->tfcpad;
>  	x->replay_maxdiff = orig->replay_maxdiff;
>  	x->replay_maxage = orig->replay_maxage;
> -	x->curlft.add_time = orig->curlft.add_time;
> +	x->curlft = orig->curlft;

You should use memcpy if you want to copy the whole structure.
diff mbox series

Patch

diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c
index 16988303aed6..64eb4a6fcfc2 100644
--- a/net/xfrm/xfrm_state.c
+++ b/net/xfrm/xfrm_state.c
@@ -1550,7 +1550,7 @@  static struct xfrm_state *xfrm_state_clone(struct xfrm_state *orig,
 	x->tfcpad = orig->tfcpad;
 	x->replay_maxdiff = orig->replay_maxdiff;
 	x->replay_maxage = orig->replay_maxage;
-	x->curlft.add_time = orig->curlft.add_time;
+	x->curlft = orig->curlft;
 	x->km.state = orig->km.state;
 	x->km.seq = orig->km.seq;
 	x->replay = orig->replay;