On 4/15/19 6:56 PM, David Ahern wrote:
> @@ -182,14 +178,10 @@ static int fib6_rule_action_alt(struct fib_rule *rule,
> struct flowi *flp,
> return -EAGAIN;
>
> oif = (int *)arg->lookup_data;
> - f6i = fib6_table_lookup(net, table, *oif, flp6, flags);
> - if (f6i != net->ipv6.fib6_null_entry) {
> + err = fib6_table_lookup(net, table, *oif, flp6, res, flags);
> + if (!err && res->f6i != net->ipv6.fib6_null_entry)
> err = fib6_rule_saddr(net, rule, flags, flp6,
> - fib6_info_nh_dev(f6i));
> -
> - if (likely(!err))
> - arg->result = f6i;
> - }
> + fib6_info_nh_dev(res->f6i));
that is supposed to be res->nh, not fib6_info_nh_dev(res->f6i).
Will fix and send a v2.