Message ID | 20240311135112.2642491-3-enachman@marvell.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Fix prestera driver fail to probe twice | expand |
On Mon, 11 Mar 2024 15:51:11 +0200 Elad Nachman <enachman@marvell.com> wrote: > From: Elad Nachman <enachman@marvell.com> > > Prestera driver routing module cleanup process would > release memory and then reference it again, and eventually > free it again. > Remove the redundant first memory free call. > All such double free calls were detected using KASAN. Not directly related to this patch but I am wondering if the call to prestera_port_sfp_unbind(port) is not missing in prestera_destroy_ports() function? Regards,
> -----Original Message----- > From: Kory Maincent <kory.maincent@bootlin.com> > Sent: Tuesday, March 12, 2024 5:45 PM > To: Elad Nachman <enachman@marvell.com> > Cc: Taras Chornyi <taras.chornyi@plvision.eu>; davem@davemloft.net; > edumazet@google.com; kuba@kernel.org; pabeni@redhat.com; > andrew@lunn.ch; thomas.petazzoni@bootlin.com; > miquel.raynal@bootlin.com; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org > Subject: [EXTERNAL] Re: [PATCH 2/3] net: marvell: prestera: fix memory use > after free > > Prioritize security for external emails: Confirm sender and content safety > before clicking links or opening attachments > > ---------------------------------------------------------------------- > On Mon, 11 Mar 2024 15:51:11 +0200 > Elad Nachman <enachman@marvell.com> wrote: > > > From: Elad Nachman <enachman@marvell.com> > > > > Prestera driver routing module cleanup process would release memory > > and then reference it again, and eventually free it again. > > Remove the redundant first memory free call. > > All such double free calls were detected using KASAN. > > Not directly related to this patch but I am wondering if the call to > prestera_port_sfp_unbind(port) is not missing in > prestera_destroy_ports() function? Yes, it is. > > Regards, > -- > Köry Maincent, Bootlin > Embedded Linux and kernel engineering > https://urldefense.proofpoint.com/v2/url?u=https- > 3A__bootlin.com&d=DwIFaQ&c=nKjWec2b6R0mOyPaz7xtfQ&r=eTeNTLEK5- > TxXczjOcKPhANIFtlB9pP4lq9qhdlFrwQ&m=VnjwUBq4QS_Onl_07gp1OUp2XoG > pT- > bZ5snEOAg5gf3CM3l5GPgXQ1pb3GzEa6bb&s=GchzqI3lHyGuFKhepEFMFsXwp > 5oMSH9iqwBZuTtzhjc&e= Elad.
diff --git a/drivers/net/ethernet/marvell/prestera/prestera_router.c b/drivers/net/ethernet/marvell/prestera/prestera_router.c index de317179a7dc..2da04a17efad 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_router.c +++ b/drivers/net/ethernet/marvell/prestera/prestera_router.c @@ -1638,7 +1638,6 @@ void prestera_router_fini(struct prestera_switch *sw) prestera_k_arb_abort(sw); kfree(sw->router->nhgrp_hw_state_cache); - rhashtable_destroy(&sw->router->kern_fib_cache_ht); prestera_router_hw_fini(sw); kfree(sw->router); sw->router = NULL; diff --git a/drivers/net/ethernet/marvell/prestera/prestera_router_hw.c b/drivers/net/ethernet/marvell/prestera/prestera_router_hw.c index 02faaea2aefa..254107f664b4 100644 --- a/drivers/net/ethernet/marvell/prestera/prestera_router_hw.c +++ b/drivers/net/ethernet/marvell/prestera/prestera_router_hw.c @@ -102,7 +102,6 @@ void prestera_router_hw_fini(struct prestera_switch *sw) prestera_fib_node_destroy_ht_cb, sw); WARN_ON(!list_empty(&sw->router->vr_list)); WARN_ON(!list_empty(&sw->router->rif_entry_list)); - rhashtable_destroy(&sw->router->fib_ht); rhashtable_destroy(&sw->router->nexthop_group_ht); rhashtable_destroy(&sw->router->nh_neigh_ht); }