Em Thu, Oct 02, 2008 at 05:43:20PM +0200, KOVACS Krisztian escreveu: > Hi, > > On Wed, 2008-10-01 at 08:51 -0700, David Miller wrote: > > From: KOVACS Krisztian <hidden@xxxxxxxxxx> > > Date: Wed, 01 Oct 2008 17:38:20 +0200 > > > > > The problem is that if you include the if() test then you have to > > > include the lookup call as well and that's different for TCP/UDP. > > > > No, I only mean to make a helper for this construct: > > > > if (unlikely(skb->sk)) { > > ... > > } > > > > so, something like: > > > > static inline struct sock *sock_skb_steal(struct sk_buff *skb) > > { > > if (unlikely(skb->sk)) { > > struct sock *sk = skb->sk; > > > > skb->destructor = NULL; > > skb->sk = NULL; > > return sk; > > } > > return NULL; > > } > > > > and then also get rid of the ifdefs at the place where > > these calls are made (TCP and UDP). > > Something like this? > > - 8< - Why don't you add it to __inet6_lookup, __inet6_lookup and the udp_lib lookup routines? And please rename it to skb_steal_sock, as it acts on a skb, not on a sock. - Arnaldo -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html