Thread (12 messages) 12 messages, 5 authors, 2012-12-04

Re: [PATCH net-next 3/7] ipv6: improve ipv6_find_hdr() to skip empty routing headers

From: Jesse Gross <hidden>
Date: 2012-12-04 18:15:32

On Mon, Dec 3, 2012 at 10:06 AM, Pablo Neira Ayuso [off-list ref] wrote:
On Mon, Dec 03, 2012 at 09:28:55AM -0800, Jesse Gross wrote:
quoted
On Mon, Dec 3, 2012 at 6:04 AM, Pablo Neira Ayuso [off-list ref] wrote:
quoted
On Thu, Nov 29, 2012 at 10:35:45AM -0800, Jesse Gross wrote:
quoted
@@ -159,9 +162,10 @@ int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset,
      }
      len = skb->len - start;

-     while (nexthdr != target) {
If the offset is set as parameter via ipv6_find_hdr, we now are always
entering the loop even if we found the target header we're looking
for, before that didn't happen.

Something seems wrong here to me.
If the target header is a routing header then you might still need to
continue searching because the first one that you see could be empty.
OK, but if it's not a routing header what we're searching for (which
seems to be the case of netfilter/IPVS) we waste way more cycles on
copying the IPv6 header again and with way more things that are
completely useless.
We could add a check to short circuit this but it seems like a
premature optimization to me.

Ansis, can you comment?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help