Files
twx-linux/net/ipv4
Liping Zhang f7f46b3ba2 netfilter: invoke synchronize_rcu after set the _hook_ to NULL
[ Upstream commit 3b7dabf029 ]

Otherwise, another CPU may access the invalid pointer. For example:
    CPU0                CPU1
     -              rcu_read_lock();
     -              pfunc = _hook_;
  _hook_ = NULL;          -
  mod unload              -
     -                 pfunc(); // invalid, panic
     -             rcu_read_unlock();

So we must call synchronize_rcu() to wait the rcu reader to finish.

Also note, in nf_nat_snmp_basic_fini, synchronize_rcu() will be invoked
by later nf_conntrack_helper_unregister, but I'm inclined to add a
explicit synchronize_rcu after set the nf_nat_snmp_hook to NULL. Depend
on such obscure assumptions is not a good idea.

Last, in nfnetlink_cttimeout, we use kfree_rcu to free the time object,
so in cttimeout_exit, invoking rcu_barrier() is not necessary at all,
remove it too.

Signed-off-by: Liping Zhang <zlpnobody@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-10-08 10:14:19 +02:00
..
2017-06-14 13:16:19 +02:00
…
2017-06-17 06:39:35 +02:00
2016-11-15 07:46:38 +01:00
2016-11-15 07:46:38 +01:00
2017-07-05 14:37:14 +02:00
2017-02-26 11:07:50 +01:00
…
…
2015-10-21 07:00:48 -07:00
2017-04-30 05:49:29 +02:00
…
2017-08-30 10:19:19 +02:00
…
…
2017-03-22 12:04:17 +01:00
2017-05-14 13:32:58 +02:00
2015-10-21 07:00:53 -07:00
…
…