xfrm: Fix deletion of offloaded SAs on failure.
authorSteffen Klassert <steffen.klassert@secunet.com>
Mon, 4 Sep 2017 08:28:02 +0000 (10:28 +0200)
committerSteffen Klassert <steffen.klassert@secunet.com>
Mon, 11 Sep 2017 08:36:41 +0000 (10:36 +0200)
When we off load a SA, it gets pushed to the NIC before we can
add it. In case of a failure, we don't delete this SA from the
NIC. Fix this by calling xfrm_dev_state_delete on failure.

Fixes: d77e38e612a0 ("xfrm: Add an IPsec hardware offloading API")
Reported-by: Shannon Nelson <shannon.nelson@oracle.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/xfrm/xfrm_user.c

index 2bfbd91..b997f13 100644 (file)
@@ -657,6 +657,7 @@ static int xfrm_add_sa(struct sk_buff *skb, struct nlmsghdr *nlh,
 
        if (err < 0) {
                x->km.state = XFRM_STATE_DEAD;
+               xfrm_dev_state_delete(x);
                __xfrm_state_put(x);
                goto out;
        }