[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAEA6p_Cz31v798F=9+54hnf7yy8diPzXR2FjPuANeaWu0xD7YQ@mail.gmail.com>
Date: Wed, 19 Jun 2019 09:51:30 -0700
From: Wei Wang <weiwan@...gle.com>
To: David Miller <davem@...emloft.net>
Cc: 王蔚 <tracywwnj@...il.com>,
Linux Kernel Network Developers <netdev@...r.kernel.org>,
Martin KaFai Lau <kafai@...com>,
Eric Dumazet <edumazet@...gle.com>,
Mahesh Bandewar <maheshb@...gle.com>,
David Ahern <dsahern@...il.com>
Subject: Re: [PATCH net-next 3/5] ipv6: honor RT6_LOOKUP_F_DST_NOREF in rule
lookup logic
On Wed, Jun 19, 2019 at 9:07 AM David Miller <davem@...emloft.net> wrote:
>
> From: Wei Wang <tracywwnj@...il.com>
> Date: Tue, 18 Jun 2019 11:25:41 -0700
>
> > @@ -237,13 +240,16 @@ static int __fib6_rule_action(struct fib_rule *rule, struct flowi *flp,
> > goto out;
> > }
> > again:
> > - ip6_rt_put(rt);
> > + if (!(flags & RT6_LOOKUP_F_DST_NOREF) ||
> > + !list_empty(&rt->rt6i_uncached))
> > + ip6_rt_put(rt);
>
> This conditional release logic, with the special treatment of uncache items
> when using DST_NOREF, seems error prone.
>
> Maybe you can put this logic into a helper like ip6_rt_put_any() and do the
> list empty test etc. there?
>
> ip6_rt_put_any(struct rt6_info *rt, int flags);
>
> What do you think?
Thanks David. Sure. Will update.
Powered by blists - more mailing lists