24.11.2015 09:34, Andrey Ryabinin пишет:

On 11/23/2015 07:08 PM, Stanislav Kinsburskiy wrote:
From: Hannes Frederic Sowa <[email protected]>

Bob Falken reported that after 4G packets, multicast forwarding stopped
working. This was because of a rule reference counter overflow which
freed the rule as soon as the overflow happend.

This patch solves this by adding the FIB_LOOKUP_NOREF flag to
fib_rules_lookup calls. This is safe even from non-rcu locked sections
as in this case the flag only implies not taking a reference to the rule,
which we don't need at all.

Rules only hold references to the namespace, which are guaranteed to be
available during the call of the non-rcu protected function reg_vif_xmit
because of the interface reference which itself holds a reference to
the net namespace.

Backport: https://jira.sw.ru/browse/PSBM-41453

Fixes: f0ad0860d01e47 ("ipv4: ipmr: support multiple tables")
Fixes: d1db275dd3f6e4 ("ipv6: ip6mr: support multiple tables")
Reported-by: Bob Falken <[email protected]>
Cc: Patrick McHardy <[email protected]>
Cc: Thomas Graf <[email protected]>
Cc: Julian Anastasov <[email protected]>
Cc: Eric Dumazet <[email protected]>
Signed-off-by: Hannes Frederic Sowa <[email protected]>
Acked-by: Eric Dumazet <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Stanislav Kinsburskiy <[email protected]>
---
  net/ipv4/ipmr.c  |    7 +++++--
  net/ipv6/ip6mr.c |    7 +++++--
  2 files changed, 10 insertions(+), 4 deletions(-)

What about dn_fib_lookup()? Do we need a similar patch  for it?
Anyway, this patch LGTM:
        Reviewed-by: Andrey Ryabinin <[email protected]>


Nope. All the calls are paired with dn_fib_res_put(), which does fib_rule_put()

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to