Message ID | 20240729124406.1824592-3-tariqt@nvidia.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Fixes for IPsec over bonding | expand |
On Mon, Jul 29, 2024 at 03:44:03PM +0300, Tariq Toukan wrote: > From: Jianbo Liu <jianbol@nvidia.com> > > Need to call xdo_dev_state_free API to avoid hardware resource leakage > when deleting all SAs from old active real interface. > > Fixes: 9a5605505d9c ("bonding: Add struct bond_ipesc to manage SA") > Signed-off-by: Jianbo Liu <jianbol@nvidia.com> > Reviewed-by: Cosmin Ratiu <cratiu@nvidia.com> > Signed-off-by: Tariq Toukan <tariqt@nvidia.com> > --- > drivers/net/bonding/bond_main.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c > index 3b880ff2b82a..551cebfa3261 100644 > --- a/drivers/net/bonding/bond_main.c > +++ b/drivers/net/bonding/bond_main.c > @@ -581,6 +581,8 @@ static void bond_ipsec_del_sa_all(struct bonding *bond) > __func__); > } else { > slave->dev->xfrmdev_ops->xdo_dev_state_delete(ipsec->xs); > + if (slave->dev->xfrmdev_ops->xdo_dev_state_free) > + slave->dev->xfrmdev_ops->xdo_dev_state_free(ipsec->xs); OH, you do it here. > } > ipsec->xs->xso.real_dev = NULL; I'm not sure if we should make xdo_dev_state_free() rely on xdo_dev_state_delete(). In xfrm_state_find() the xfrm_dev_state_free() is called whatever xfrm_dev_state_delete() is support or not. Although usually the NIC driver will support the _delete() if the _free() supported. BTW, For me this patch should merge with Patch 1/4 Thanks Hangbin
On Wed, 2024-07-31 at 11:36 +0800, Hangbin Liu wrote: > On Mon, Jul 29, 2024 at 03:44:03PM +0300, Tariq Toukan wrote: > > From: Jianbo Liu <jianbol@nvidia.com> > > > > Need to call xdo_dev_state_free API to avoid hardware resource > > leakage > > when deleting all SAs from old active real interface. > > > > Fixes: 9a5605505d9c ("bonding: Add struct bond_ipesc to manage SA") > > Signed-off-by: Jianbo Liu <jianbol@nvidia.com> > > Reviewed-by: Cosmin Ratiu <cratiu@nvidia.com> > > Signed-off-by: Tariq Toukan <tariqt@nvidia.com> > > --- > > drivers/net/bonding/bond_main.c | 2 ++ > > 1 file changed, 2 insertions(+) > > > > diff --git a/drivers/net/bonding/bond_main.c > > b/drivers/net/bonding/bond_main.c > > index 3b880ff2b82a..551cebfa3261 100644 > > --- a/drivers/net/bonding/bond_main.c > > +++ b/drivers/net/bonding/bond_main.c > > @@ -581,6 +581,8 @@ static void bond_ipsec_del_sa_all(struct > > bonding *bond) > > __func__); > > } else { > > slave->dev->xfrmdev_ops- > > >xdo_dev_state_delete(ipsec->xs); > > + if (slave->dev->xfrmdev_ops- > > >xdo_dev_state_free) > > + slave->dev->xfrmdev_ops- > > >xdo_dev_state_free(ipsec->xs); > > OH, you do it here. > Yes :) > > } > > ipsec->xs->xso.real_dev = NULL; > > I'm not sure if we should make xdo_dev_state_free() rely on > xdo_dev_state_delete(). In xfrm_state_find() the > xfrm_dev_state_free() > is called whatever xfrm_dev_state_delete() is support or not. > Although > usually the NIC driver will support the _delete() if the _free() > supported. > I don't see they rely on each other, so I'd like to keep it as is. > BTW, For me this patch should merge with Patch 1/4 Will do. Thanks! > > Thanks > Hangbin
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 3b880ff2b82a..551cebfa3261 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -581,6 +581,8 @@ static void bond_ipsec_del_sa_all(struct bonding *bond) __func__); } else { slave->dev->xfrmdev_ops->xdo_dev_state_delete(ipsec->xs); + if (slave->dev->xfrmdev_ops->xdo_dev_state_free) + slave->dev->xfrmdev_ops->xdo_dev_state_free(ipsec->xs); } ipsec->xs->xso.real_dev = NULL; }