From: David Ahern <dsah...@kernel.org> Date: Mon, 6 Jul 2020 11:45:07 -0600
> Brian reported a crash in IPv6 code when using rpfilter with a setup > running FRR and external nexthop objects. The root cause of the crash > is fib6_select_path setting fib6_nh in the result to NULL because of > an improper check for nexthop objects. > > More specifically, rpfilter invokes ip6_route_lookup with flowi6_oif > set causing fib6_select_path to be called with have_oif_match set. > fib6_select_path has early check on have_oif_match and jumps to the > out label which presumes a builtin fib6_nh. This path is invalid for > nexthop objects; for external nexthops fib6_select_path needs to just > return if the fib6_nh has already been set in the result otherwise it > returns after the call to nexthop_path_fib6_result. Update the check > on have_oif_match to not bail on external nexthops. > > Update selftests for this problem. > > Fixes: f88d8ea67fbd ("ipv6: Plumb support for nexthop object in a fib6_info") > Reported-by: Brian Rak <b...@choopa.com> > Signed-off-by: David Ahern <dsah...@kernel.org> > --- > v2 > - for multipath nexthops path may already be set; do not want to > overwrite that selection based on hash Applied and queued up for -stable, thanks David.