diff options
author | Ingo Molnar <mingo@elte.hu> | 2011-09-26 12:53:42 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-09-26 12:54:28 +0200 |
commit | ed3982cf3748b657ffb79d9d1c2e4a562661db2d (patch) | |
tree | 6e3654f460e23aa1b1512896aa3f03886a69be1b /net/ipv4/fib_semantics.c | |
parent | cba9bd22a5f8f857534b9a7f3fb3cafa0ac5fb75 (diff) | |
parent | d93dc5c4478c1fd5de85a3e8aece9aad7bbae044 (diff) | |
download | talos-op-linux-ed3982cf3748b657ffb79d9d1c2e4a562661db2d.tar.gz talos-op-linux-ed3982cf3748b657ffb79d9d1c2e4a562661db2d.zip |
Merge commit 'v3.1-rc7' into perf/core
Merge reason: Pick up the latest upstream fixes.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'net/ipv4/fib_semantics.c')
-rw-r--r-- | net/ipv4/fib_semantics.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c index 33e2c35b74b7..80106d89d548 100644 --- a/net/ipv4/fib_semantics.c +++ b/net/ipv4/fib_semantics.c @@ -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) { @@ -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) |