Hello,
On Wed, 19 Jul 2017, Taehee Yoo wrote:
> This patch removes duplicate rcu_read_lock().
>
> 1. IPVS part
> According to Julian Anastasov's mention, contexts of ipvs are below. [1]
> - packet RX/TX: does not need locks because packets come from hooks
> - sync msg RX: backup server uses RCU locks while registering new conns
> - ip_vs_ctl.c: configuration get/set, RCU locks needed
> - xt_ipvs.c: It is a NF match
>
> As result, rcu_read_lock and rcu_read_unlock can be removed from:
> - ip_vs_core.c: all
> - ip_vs_ctl.c:
> - only from ip_vs_has_real_service
> - ip_vs_ftp.c: all
> - ip_vs_proto_sctp.c: all
> - ip_vs_proto_tcp.c: all
> - ip_vs_proto_udp.c: all
> - ip_vs_xmit.c: all (contains only packet processing)
>
> 2. NF part
> There are three types of functions that are guaranteed the rcu_read_lock().
> First, as result, functions are only called by nf_hook().
> - nf_conntrack_broadcast_help(), pptp_expectfn(), set_expected_rtp_rtcp().
> - tcpmss_reverse_mtu(), tproxy_laddr4(), tproxy_laddr6().
> - match_lookup_rt6(), check_hlist(), hashlimit_mt_common().
> - xt_osf_match_packet().
> Second, functions that caller already held the rcu_read_lock().
> - destroy_conntrack(), ctnetlink_conntrack_event().
> - ctnl_timeout_find_get(), nfqnl_nf_hook_drop().
> Third, functions that are mixed with type1 and type2.
> These functions are called by nf_hook() also these are called by
> ordinary functions that already held the rcu_read_lock().
> - __ctnetlink_glue_build(), ctnetlink_expect_event().
> - ctnetlink_proto_size().
>
> Applied files are below.
> - nf_conntrack_broadcast.c, nf_conntrack_core.c, nf_conntrack_netlink.c.
> - nf_conntrack_pptp.c, nf_conntrack_sip.c, nfnetlink_cttimeout.c.
> - nfnetlink_queue.c, xt_TCPMSS.c, xt_TPROXY.c, xt_addrtype.c.
> - xt_connlimit.c, xt_hashlimit.c, xt_osf.c
>
> Detailed calltrace can be found here
> http://marc.info/?l=netfilter-devel&m=149667610710350&w=2
>
> [1] http://marc.info/?l=netfilter-devel&m=149562884514072&w=2
>
> Signed-off-by: Taehee Yoo <ap420073@xxxxxxxxx>
For IPVS part:
Acked-by: Julian Anastasov <ja@xxxxxx>
> ---
> V3:
> - Change commit message.
Regards
--
Julian Anastasov <ja@xxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
|