[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130219214934.GD31871@hmsreliant.think-freely.org>
Date: Tue, 19 Feb 2013 16:49:34 -0500
From: Neil Horman <nhorman@...driver.com>
To: Eric Dumazet <eric.dumazet@...il.com>
Cc: netdev@...r.kernel.org, David Miller <davem@...emloft.net>,
Gao feng <gaofeng@...fujitsu.com>, Jiri Bohac <jbohac@...e.cz>
Subject: Re: [RFC PATCH] ipv6: Split from and expires field in dst_entry out
of union [net-next]
On Tue, Feb 19, 2013 at 01:17:45PM -0800, Eric Dumazet wrote:
> On Tue, 2013-02-19 at 15:28 -0500, Neil Horman wrote:
>
> > static inline void rt6_update_expires(struct rt6_info *rt, int timeout)
> > {
> > if (!(rt->rt6i_flags & RTF_EXPIRES)) {
> > - if (rt->dst.from)
> > - dst_release(rt->dst.from);
> > + dst_release(rt->dst.from);
> > /* dst_set_expires relies on expires == 0
> > * if it has not been set previously.
> > */
> > rt->dst.expires = 0;
> > + rt6->dst.from = NULL;
> > }
> >
>
> Sorry you didnt really address the problem, only reduce the race window.
>
I kinda had a feeling you would say that, but the only other solution I see here
is to either introduce some locking to protect the from pointer, or two revert
the patch that introduced the from pointer alltogether, neither of which sounds
appealing to me. I suppose we could use an xchng to atomically update the from
pointer, so there was only ever one context that was able to free it in
rt6_update_path. Does that seem reasonable to you?
Neil
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists