xfrm: Fix return value check of copy_sec_ctx.
authorSteffen Klassert <steffen.klassert@secunet.com>
Thu, 31 Aug 2017 08:37:00 +0000 (10:37 +0200)
committerSteffen Klassert <steffen.klassert@secunet.com>
Thu, 31 Aug 2017 08:37:00 +0000 (10:37 +0200)
A recent commit added an output_mark. When copying
this output_mark, the return value of copy_sec_ctx
is overwitten without a check. Fix this by copying
the output_mark before the security context.

Fixes: 077fbac405bf ("net: xfrm: support setting an output mark.")
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/xfrm/xfrm_user.c

index cc3268d814b4aec18bc72750e172b776203ef11e..490132d6dc36dd4c1060b8848ff7d7c1a362f5ae 100644 (file)
@@ -900,13 +900,13 @@ static int copy_to_user_state_extra(struct xfrm_state *x,
                ret = copy_user_offload(&x->xso, skb);
        if (ret)
                goto out;
-       if (x->security)
-               ret = copy_sec_ctx(x->security, skb);
        if (x->props.output_mark) {
                ret = nla_put_u32(skb, XFRMA_OUTPUT_MARK, x->props.output_mark);
                if (ret)
                        goto out;
        }
+       if (x->security)
+               ret = copy_sec_ctx(x->security, skb);
 out:
        return ret;
 }