From: Herbert Xu <[EMAIL PROTECTED]> Date: Thu, 8 Nov 2007 08:39:03 +0800
> On Wed, Nov 07, 2007 at 05:17:42PM +0100, Ingo Oeser wrote: > > Hi Herbert, > > > > Herbert Xu schrieb: > > > diff --git a/net/ipv6/xfrm6_mode_ro.c b/net/ipv6/xfrm6_mode_ro.c > > > index a7bc8c6..4a01cb3 100644 > > > --- a/net/ipv6/xfrm6_mode_ro.c > > > +++ b/net/ipv6/xfrm6_mode_ro.c > > > @@ -53,7 +54,9 @@ static int xfrm6_ro_output(struct xfrm_state *x, struct > > > sk_buff *skb) > > > __skb_pull(skb, hdr_len); > > > memmove(ipv6_hdr(skb), iph, hdr_len); > > > > > > + spin_lock_bh(&x->lock); > > > x->lastused = get_seconds(); > > > + spin_unlock_bh(&x->lock); > > > > > > return 0; > > > } > > > > Can you move the retrieval of the seconds outside the spinlock? > > You certainly could. Whether it's worth it I won't speculate :) Make 'lastused' an 'unsigned long' (that's all that get_seconds() gives to us anyways), fix up the nla_total_size(x->lastused) thing in net/xfrm/xfrm_user.c, and then you can remove this lock acquisition completely because the store into x->lastused will now be atomic and therefore locks aren't protecting anything. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html