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.