summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2010-11-04 01:21:39 +0000
committerDavid S. Miller <davem@davemloft.net>2010-11-04 12:05:32 -0700
commit1f1b9c9990205759aae31b7734b0ede41a867f32 (patch)
treeaba367dd7280ff38932c881a0fcf5356bea53df2
parentcccbe5ef85284621d19e5b2b1c61cc0506bc9dee (diff)
downloadlinux-3.10-1f1b9c9990205759aae31b7734b0ede41a867f32.tar.gz
linux-3.10-1f1b9c9990205759aae31b7734b0ede41a867f32.tar.bz2
linux-3.10-1f1b9c9990205759aae31b7734b0ede41a867f32.zip
fib: fib_result_assign() should not change fib refcounts
After commit ebc0ffae5 (RCU conversion of fib_lookup()), fib_result_assign() should not change fib refcounts anymore. Thanks to Michael who did the bisection and bug report. Reported-by: Michael Ellerman <michael@ellerman.id.au> Tested-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ipv4/fib_lookup.h5
1 files changed, 1 insertions, 4 deletions
diff --git a/net/ipv4/fib_lookup.h b/net/ipv4/fib_lookup.h
index a29edf2219c..c079cc0ec65 100644
--- a/net/ipv4/fib_lookup.h
+++ b/net/ipv4/fib_lookup.h
@@ -47,11 +47,8 @@ extern int fib_detect_death(struct fib_info *fi, int order,
static inline void fib_result_assign(struct fib_result *res,
struct fib_info *fi)
{
- if (res->fi != NULL)
- fib_info_put(res->fi);
+ /* we used to play games with refcounts, but we now use RCU */
res->fi = fi;
- if (fi != NULL)
- atomic_inc(&fi->fib_clntref);
}
#endif /* _FIB_LOOKUP_H */