Xin Long f31e5f1a89 netfilter: unlock xt_table earlier in __do_replace
Now it's doing cleanup_entry for oldinfo under the xt_table lock,
but it's not really necessary. After the replacement job is done
in xt_replace_table, oldinfo is not used elsewhere any more, and
it can be freed without xt_table lock safely.

The important thing is that rtnl_lock is called in some xt_target
destroy, which means rtnl_lock, a big lock is used in xt_table
lock, a smaller one. It usually could be the reason why a dead
lock may happen.

Besides, all xt_target/match checkentry is called out of xt_table
lock. It's better also to move all cleanup_entry calling out of
xt_table lock, just as do_replace_finish does for ebtables.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
2018-03-05 23:15:43 +01:00
..
2018-02-15 14:29:27 -08:00
2018-03-05 10:48:27 -05:00
2018-03-05 10:48:27 -05:00
2018-03-05 10:48:27 -05:00
2018-03-05 10:48:28 -05:00
2017-11-01 12:19:03 +09:00
2018-02-27 11:01:35 -05:00
2018-03-05 10:43:37 -05:00
2017-11-08 16:12:33 +09:00
2018-02-13 10:36:08 -05:00
2018-02-20 13:51:47 -05:00
2018-02-01 09:51:57 -08:00
2018-02-13 10:36:05 -05:00