Message ID | 20201207015916.43126-1-cmi@nvidia.com |
---|---|
State | New |
Headers | show |
Series | [net] net: flow_offload: Fix memory leak for indirect flow block | expand |
On Mon, 7 Dec 2020 09:59:16 +0800 Chris Mi wrote: > The offending commit introduces a cleanup callback that is invoked > when the driver module is removed to clean up the tunnel device > flow block. But it returns on the first iteration of the for loop. > The remaining indirect flow blocks will never be freed. > > Fixes: 1fac52da5942 ("net: flow_offload: consolidate indirect flow_block infrastructure") > Signed-off-by: Chris Mi <cmi@nvidia.com> > Reviewed-by: Roi Dayan <roid@nvidia.com> Please repost and CC relevant people.
On 12/8/2020 10:28 AM, Jakub Kicinski wrote: > On Mon, 7 Dec 2020 09:59:16 +0800 Chris Mi wrote: >> The offending commit introduces a cleanup callback that is invoked >> when the driver module is removed to clean up the tunnel device >> flow block. But it returns on the first iteration of the for loop. >> The remaining indirect flow blocks will never be freed. >> >> Fixes: 1fac52da5942 ("net: flow_offload: consolidate indirect flow_block infrastructure") >> Signed-off-by: Chris Mi <cmi@nvidia.com> >> Reviewed-by: Roi Dayan <roid@nvidia.com> > Please repost and CC relevant people. > Done.
diff --git a/net/core/flow_offload.c b/net/core/flow_offload.c index d4474c812b64..715b67f6c62f 100644 --- a/net/core/flow_offload.c +++ b/net/core/flow_offload.c @@ -381,10 +381,8 @@ static void __flow_block_indr_cleanup(void (*release)(void *cb_priv), list_for_each_entry_safe(this, next, &flow_block_indr_list, indr.list) { if (this->release == release && - this->indr.cb_priv == cb_priv) { + this->indr.cb_priv == cb_priv) list_move(&this->indr.list, cleanup_list); - return; - } } }