]> git.baikalelectronics.ru Git - kernel.git/commit
inet: limit length of fragment queue hash table bucket lists
authorHannes Frederic Sowa <hannes@stressinduktion.org>
Fri, 15 Mar 2013 11:32:30 +0000 (11:32 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 19 Mar 2013 14:28:36 +0000 (10:28 -0400)
commit2dcec0092f65f4d204ae5f77ddb2ceec51236ca4
treeb7bbaabf1271af7d912e9bdbb7f5810d2d0a5d3e
parente90c19577aeecd3dea9eefd5837430d04f2c5c1e
inet: limit length of fragment queue hash table bucket lists

This patch introduces a constant limit of the fragment queue hash
table bucket list lengths. Currently the limit 128 is choosen somewhat
arbitrary and just ensures that we can fill up the fragment cache with
empty packets up to the default ip_frag_high_thresh limits. It should
just protect from list iteration eating considerable amounts of cpu.

If we reach the maximum length in one hash bucket a warning is printed.
This is implemented on the caller side of inet_frag_find to distinguish
between the different users of inet_fragment.c.

I dropped the out of memory warning in the ipv4 fragment lookup path,
because we already get a warning by the slab allocator.

Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Jesper Dangaard Brouer <jbrouer@redhat.com>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/inet_frag.h
net/ipv4/inet_fragment.c
net/ipv4/ip_fragment.c
net/ipv6/netfilter/nf_conntrack_reasm.c
net/ipv6/reassembly.c