inet: frags: better deal with smp races
authorEric Dumazet <edumazet@google.com>
Fri, 9 Nov 2018 01:34:27 +0000 (17:34 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 9 Nov 2018 02:40:30 +0000 (18:40 -0800)
commit0d5b9311baf27bb545f187f12ecfd558220c607d
tree73bc70b75089cf84c4d473506bfa59db36a08baa
parente12c225258f2584906765234ca6db4ad4c618192
inet: frags: better deal with smp races

Multiple cpus might attempt to insert a new fragment in rhashtable,
if for example RPS is buggy, as reported by 배석진 in
https://patchwork.ozlabs.org/patch/994601/

We use rhashtable_lookup_get_insert_key() instead of
rhashtable_insert_fast() to let cpus losing the race
free their own inet_frag_queue and use the one that
was inserted by another cpu.

Fixes: 648700f76b03 ("inet: frags: use rhashtables for reassembly units")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: 배석진 <soukjin.bae@samsung.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_fragment.c