Re: [ 157/184] inet: add RCU protection to inet->opt

From: Willy Tarreau
Date: Fri Jun 07 2013 - 11:50:10 EST


On Fri, Jun 07, 2013 at 07:11:57AM +0100, Ben Hutchings wrote:
> On Tue, 2013-06-04 at 19:24 +0200, Willy Tarreau wrote:
> > 2.6.32-longterm review patch. If anyone has any objections, please let me know.
> >
> > ------------------
> >
> > From: Eric Dumazet <eric.dumazet@xxxxxxxxx>
> >
> > commit f6d8bd051c391c1c0458a30b2a7abcd939329259 upstream.
> >
> > We lack proper synchronization to manipulate inet->opt ip_options
> >
> > Problem is ip_make_skb() calls ip_setup_cork() and
> > ip_setup_cork() possibly makes a copy of ipc->opt (struct ip_options),
> > without any protection against another thread manipulating inet->opt.
> >
> > Another thread can change inet->opt pointer and free old one under us.
> >
> > Use RCU to protect inet->opt (changed to inet->inet_opt).
> >
> > Instead of handling atomic refcounts, just copy ip_options when
> > necessary, to avoid cache line dirtying.
> >
> > We cant insert an rcu_head in struct ip_options since its included in
> > skb->cb[], so this patch is large because I had to introduce a new
> > ip_options_rcu structure.
> >
> > Signed-off-by: Eric Dumazet <eric.dumazet@xxxxxxxxx>
> > Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
> > Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
> > [dannf/bwh: backported to Debian's 2.6.32]
>
> Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx>

added, thank you.

willy

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/