]> git.baikalelectronics.ru Git - kernel.git/commit
net: frag, avoid several CPUs grabbing same frag queue during LRU evictor loop
authorJesper Dangaard Brouer <brouer@redhat.com>
Wed, 27 Mar 2013 05:55:25 +0000 (05:55 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 27 Mar 2013 16:48:33 +0000 (12:48 -0400)
commit92647e0993be9fdef4bf6bae62596e5f78dcacf6
tree03e6d64768df3178e8bb4ef897e5d8c6ca1cb24c
parent53d12ecb5df7399e010097dabf55ea851774197c
net: frag, avoid several CPUs grabbing same frag queue during LRU evictor loop

The LRU list is protected by its own lock, since commit 3572ef2050
(net: frag, move LRU list maintenance outside of rwlock), and
no-longer by a read_lock.

This makes it possible, to remove the inet_frag_queue, which is about
to be "evicted", from the LRU list head.  This avoids the problem, of
several CPUs grabbing the same frag queue.

Note, cannot remove the inet_frag_lru_del() call in fq_unlink()
called by inet_frag_kill(), because inet_frag_kill() is also used in
other situations.  Thus, we use list_del_init() to allow this
double list_del to work.

Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_fragment.c