]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/blobdiff - net/xfrm/xfrm_state.c
[IPSEC] xfrm: Abstract out encapsulation modes
[mirror_ubuntu-focal-kernel.git] / net / xfrm / xfrm_state.c
index ee62c239a7e39f27f862a427f0c2ddb656c88a31..17b29ec3c41779d70562113ed1219e68ff3ae5fc 100644 (file)
@@ -77,6 +77,8 @@ static void xfrm_state_gc_destroy(struct xfrm_state *x)
        kfree(x->ealg);
        kfree(x->calg);
        kfree(x->encap);
+       if (x->mode)
+               xfrm_put_mode(x->mode);
        if (x->type) {
                x->type->destructor(x);
                xfrm_put_type(x->type);
@@ -1193,6 +1195,10 @@ int xfrm_init_state(struct xfrm_state *x)
        if (err)
                goto error;
 
+       x->mode = xfrm_get_mode(x->props.mode, family);
+       if (x->mode == NULL)
+               goto error;
+
        x->km.state = XFRM_STATE_VALID;
 
 error: