copy_from_user_state(x, p);
 
+       if (attrs[XFRMA_ENCAP]) {
+               x->encap = kmemdup(nla_data(attrs[XFRMA_ENCAP]),
+                                  sizeof(*x->encap), GFP_KERNEL);
+               if (x->encap == NULL)
+                       goto error;
+       }
+
+       if (attrs[XFRMA_COADDR]) {
+               x->coaddr = kmemdup(nla_data(attrs[XFRMA_COADDR]),
+                                   sizeof(*x->coaddr), GFP_KERNEL);
+               if (x->coaddr == NULL)
+                       goto error;
+       }
+
        if (attrs[XFRMA_SA_EXTRA_FLAGS])
                x->props.extra_flags = nla_get_u32(attrs[XFRMA_SA_EXTRA_FLAGS]);
 
                                   attrs[XFRMA_ALG_COMP])))
                goto error;
 
-       if (attrs[XFRMA_ENCAP]) {
-               x->encap = kmemdup(nla_data(attrs[XFRMA_ENCAP]),
-                                  sizeof(*x->encap), GFP_KERNEL);
-               if (x->encap == NULL)
-                       goto error;
-       }
-
        if (attrs[XFRMA_TFCPAD])
                x->tfcpad = nla_get_u32(attrs[XFRMA_TFCPAD]);
 
-       if (attrs[XFRMA_COADDR]) {
-               x->coaddr = kmemdup(nla_data(attrs[XFRMA_COADDR]),
-                                   sizeof(*x->coaddr), GFP_KERNEL);
-               if (x->coaddr == NULL)
-                       goto error;
-       }
-
        xfrm_mark_get(attrs, &x->mark);
 
        xfrm_smark_init(attrs, &x->props.smark);