Skip to content

Commit

Permalink
ipv4: Fix fib_info->fib_metrics leak
Browse files Browse the repository at this point in the history
Commit 4670994(net,rcu: convert call_rcu(fc_rport_free_rcu) to
kfree_rcu()) introduced a memory leak. This patch reverts it.

Signed-off-by: Zheng Yan <zheng.z.yan@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Yan, Zheng authored and David S. Miller committed Sep 16, 2011
1 parent 4fb66b8 commit 19c1ea1
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion net/ipv4/fib_semantics.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,14 @@ const struct fib_prop fib_props[RTN_MAX + 1] = {
};

/* 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)
{
Expand All @@ -156,7 +164,7 @@ void free_fib_info(struct fib_info *fi)
} endfor_nexthops(fi);
fib_info_cnt--;
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)
Expand Down

0 comments on commit 19c1ea1

Please sign in to comment.