[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20101231.124533.15243601.davem@davemloft.net>
Date: Fri, 31 Dec 2010 12:45:33 -0800 (PST)
From: David Miller <davem@...emloft.net>
To: stephen.hemminger@...tta.com
Cc: tomas.winkler@...el.com, shemminger@...tta.com,
johannes@...solutions.net, netdev@...r.kernel.org,
linux-wireless@...r.kernel.org
Subject: Re: [PATCH net-2.6] bridge: fix br_multicast_ipv6_rcv for paged
skbs
From: Stephen Hemminger <stephen.hemminger@...tta.com>
Date: Thu, 30 Dec 2010 15:06:16 -0800
> Although copy is slower for large packets, this is a non performance
> path. The code in question is for bridged multicast Ipv6 ICMP
> packets. This case is so uncritical it could be done in BASIC and no
> one could possibly care!
I still think we should be judicious and keep using skb_clone() here.
Simply combine the two pskb_may_pull() calls into one on "skb2" after
the clone and before the blind __skb_pull() call. Then add a error
path "out:" called "out_nopush:" for the error path to goto.
Also, I think the "+ 1" in the ipv6 stack code comes from the fact that
the parsing loop can "peek" into the next header's byte to see the type.
And I really don't think it's relevant here.
Also, all of these "x_header + ... + 1 - skb->data" factors are
irrelevent and shouldn't be used. Just pass "offset + sizeof(*icmp6h)"
to pskb_may_pull().
--
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