Re: [PATCH xfrm v1] xfrm: fix error flow in case of add state fails
On Thu, Jan 18, 2018 at 03:41:51PM +0200, Aviad Yehezkel wrote: > 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 > Signed-off-by: Boris Pismeny Applied, thanks!
Re: [PATCH xfrm v1] xfrm: fix error flow in case of add state fails
On 1/18/2018 5:41 AM, Aviad Yehezkel wrote: 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 Signed-off-by: Boris Pismeny Thanks - I was wondering about that a couple of days ago and hadn't gotten back to it. Signed-off-by: Shannon Nelson --- net/xfrm/xfrm_device.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/xfrm/xfrm_device.c b/net/xfrm/xfrm_device.c index fb3f920..cd2b7d3 100644 --- a/net/xfrm/xfrm_device.c +++ b/net/xfrm/xfrm_device.c @@ -109,6 +109,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; }
[PATCH xfrm v1] xfrm: fix error flow in case of add state fails
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 Signed-off-by: Boris Pismeny --- net/xfrm/xfrm_device.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/xfrm/xfrm_device.c b/net/xfrm/xfrm_device.c index fb3f920..cd2b7d3 100644 --- a/net/xfrm/xfrm_device.c +++ b/net/xfrm/xfrm_device.c @@ -109,6 +109,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; } -- 2.7.4