OSDN Git Service

xfrm: fix error flow in case of add state fails
authorAviad Yehezkel <aviadye@mellanox.com>
Thu, 18 Jan 2018 13:41:51 +0000 (15:41 +0200)
committerSteffen Klassert <steffen.klassert@secunet.com>
Fri, 19 Jan 2018 05:44:22 +0000 (06:44 +0100)
If add state fails in case of device offload, netdev refcount
will be negative since gc task is attempting to dev_free this state.
This is fixed by putting NULL in state dev field.

Signed-off-by: Aviad Yehezkel <aviadye@mellanox.com>
Signed-off-by: Boris Pismeny <borisp@mellanox.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/xfrm/xfrm_device.c

index 30e5746..ac94771 100644 (file)
@@ -102,6 +102,7 @@ int xfrm_dev_state_add(struct net *net, struct xfrm_state *x,
 
        err = dev->xfrmdev_ops->xdo_dev_state_add(x);
        if (err) {
+               xso->dev = NULL;
                dev_put(dev);
                return err;
        }