From: Taehee Yoo Date: Mon, 29 Apr 2019 16:55:29 +0000 (+0900) Subject: netfilter: nf_flow_table: fix netdev refcnt leak X-Git-Tag: v5.15~6378^2~7^2~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=26a302afbe328ecb7507cae2035d938e6635131b;p=platform%2Fkernel%2Flinux-starfive.git netfilter: nf_flow_table: fix netdev refcnt leak flow_offload_alloc() calls nf_route() to get a dst_entry. Internally, nf_route() calls ip_route_output_key() that allocates a dst_entry and holds it. So, a dst_entry should be released by dst_release() if nf_route() is successful. Otherwise, netns exit routine cannot be finished and the following message is printed: [ 257.490952] unregister_netdevice: waiting for lo to become free. Usage count = 1 Fixes: ac2a66665e23 ("netfilter: add generic flow table infrastructure") Signed-off-by: Taehee Yoo Signed-off-by: Pablo Neira Ayuso --- diff --git a/net/netfilter/nft_flow_offload.c b/net/netfilter/nft_flow_offload.c index 8968c7f..69d7a84 100644 --- a/net/netfilter/nft_flow_offload.c +++ b/net/netfilter/nft_flow_offload.c @@ -112,6 +112,7 @@ static void nft_flow_offload_eval(const struct nft_expr *expr, if (ret < 0) goto err_flow_add; + dst_release(route.tuple[!dir].dst); return; err_flow_add: