git: 828da10bb3c3 - main - mlx5en: fix destroying tx sa_entry when installing rx sa_entry failed
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 20 Aug 2024 12:43:46 UTC
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=828da10bb3c338b5964e120dd970e649730b7f4f commit 828da10bb3c338b5964e120dd970e649730b7f4f Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2024-08-13 08:38:01 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2024-08-20 12:42:12 +0000 mlx5en: fix destroying tx sa_entry when installing rx sa_entry failed In particular, do not cancel freed linux delayed work. Sponsored by: NVidia networking --- sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c b/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c index 555847717779..01d1cb28f86d 100644 --- a/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c +++ b/sys/dev/mlx5/mlx5_accel/mlx5_ipsec.c @@ -45,6 +45,8 @@ #define MLX5_IPSEC_RESCHED msecs_to_jiffies(1000) +static void mlx5e_if_sa_deinstall_onekey(struct ifnet *ifp, u_int dev_spi, + void *priv); static int mlx5e_if_sa_deinstall(struct ifnet *ifp, u_int dev_spi, void *priv); static struct mlx5e_ipsec_sa_entry *to_ipsec_sa_entry(void *x) @@ -378,6 +380,7 @@ err_fs: mlx5_ipsec_free_sa_ctx(sa_entry); err_sa_ctx: kfree(sa_entry->dwork); + sa_entry->dwork = NULL; err_xfrm: kfree(sa_entry); mlx5_en_err(ifp, "Device failed to offload this state"); @@ -403,7 +406,9 @@ mlx5e_if_sa_newkey(struct ifnet *ifp, void *sav, u_int dev_spi, void **privp) if (error == 0) { *privp = pb; } else { - mlx5e_if_sa_deinstall(ifp, dev_spi, pb->priv_in); + if (pb->priv_in->dwork != NULL) + cancel_delayed_work_sync(&pb->priv_in->dwork->dwork); + mlx5e_if_sa_deinstall_onekey(ifp, dev_spi, pb->priv_in); free(pb, M_DEVBUF); } return (error);