Commit 19c1ea14 authored by Yan, Zheng's avatar Yan, Zheng Committed by David S. Miller

ipv4: Fix fib_info->fib_metrics leak

Commit 4670994d(net,rcu: convert call_rcu(fc_rport_free_rcu) to
kfree_rcu()) introduced a memory leak. This patch reverts it.
Signed-off-by: default avatarZheng Yan <zheng.z.yan@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4fb66b82
...@@ -142,6 +142,14 @@ const struct fib_prop fib_props[RTN_MAX + 1] = { ...@@ -142,6 +142,14 @@ const struct fib_prop fib_props[RTN_MAX + 1] = {
}; };
/* Release a nexthop info record */ /* Release a nexthop info record */
static void free_fib_info_rcu(struct rcu_head *head)
{
struct fib_info *fi = container_of(head, struct fib_info, rcu);
if (fi->fib_metrics != (u32 *) dst_default_metrics)
kfree(fi->fib_metrics);
kfree(fi);
}
void free_fib_info(struct fib_info *fi) void free_fib_info(struct fib_info *fi)
{ {
...@@ -156,7 +164,7 @@ void free_fib_info(struct fib_info *fi) ...@@ -156,7 +164,7 @@ void free_fib_info(struct fib_info *fi)
} endfor_nexthops(fi); } endfor_nexthops(fi);
fib_info_cnt--; fib_info_cnt--;
release_net(fi->fib_net); release_net(fi->fib_net);
kfree_rcu(fi, rcu); call_rcu(&fi->rcu, free_fib_info_rcu);
} }
void fib_release_info(struct fib_info *fi) void fib_release_info(struct fib_info *fi)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment