Re: [PATCH net-next v3] net: mana: Allow variable size indirection table
From: Leon Romanovsky <leon@kernel.org>
Date: 2024-06-03 08:41:27
Also in:
linux-hardening, linux-hyperv, linux-rdma, lkml
On Fri, May 31, 2024 at 08:37:41AM -0700, Shradha Gupta wrote:
Allow variable size indirection table allocation in MANA instead of using a constant value MANA_INDIRECT_TABLE_SIZE. The size is now derived from the MANA_QUERY_VPORT_CONFIG and the indirection table is allocated dynamically. Signed-off-by: Shradha Gupta <redacted> Reviewed-by: Dexuan Cui <decui@microsoft.com> Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com> --- Changes in v3: * Fixed the memory leak(save_table) in mana_set_rxfh() Changes in v2: * Rebased to latest net-next tree * Rearranged cleanup code in mana_probe_port to avoid extra operations --- drivers/infiniband/hw/mana/qp.c | 10 +-- drivers/net/ethernet/microsoft/mana/mana_en.c | 68 ++++++++++++++++--- .../ethernet/microsoft/mana/mana_ethtool.c | 27 +++++--- include/net/mana/gdma.h | 4 +- include/net/mana/mana.h | 9 +-- 5 files changed, 89 insertions(+), 29 deletions(-)
<...>
quoted hunk ↗ jump to hunk
+free_indir: + apc->indir_table_sz = 0; + kfree(apc->indir_table); + apc->indir_table = NULL; + kfree(apc->rxobj_table); + apc->rxobj_table = NULL; reset_apc: kfree(apc->rxqs); apc->rxqs = NULL;@@ -2897,6 +2936,7 @@ void mana_remove(struct gdma_dev *gd, bool suspending) {
<...>
quoted hunk ↗ jump to hunk
@@ -2931,6 +2972,11 @@ void mana_remove(struct gdma_dev *gd, bool suspending) } unregister_netdevice(ndev); + apc->indir_table_sz = 0; + kfree(apc->indir_table); + apc->indir_table = NULL; + kfree(apc->rxobj_table); + apc->rxobj_table = NULL;
Why do you need to NULLify here? Will apc is going to be accessible after call to mana_remove? or port probe failure? Thanks