[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230411113145.vjzmzuvea6yiv6jy@soft-dev3-1>
Date: Tue, 11 Apr 2023 13:31:45 +0200
From: Horatiu Vultur <horatiu.vultur@...rochip.com>
To: Simon Horman <horms@...nel.org>
CC: Julian Anastasov <ja@....bg>,
Pablo Neira Ayuso <pablo@...filter.org>,
Jozsef Kadlecsik <kadlec@...filter.org>,
Florian Westphal <fw@...len.de>, <netdev@...r.kernel.org>,
"David S. Miller" <davem@...emloft.net>,
David Ahern <dsahern@...nel.org>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>, <lvs-devel@...r.kernel.org>,
<linux-kernel@...r.kernel.org>, <netfilter-devel@...r.kernel.org>,
<coreteam@...filter.org>
Subject: Re: [PATCH nf-next v2 3/4] ipvs: Remove {Enter,Leave}Function
The 04/11/2023 09:10, Simon Horman wrote:
>
> Remove EnterFunction and LeaveFunction.
>
> These debugging macros seem well past their use-by date. And seem to
> have little value these days. Removing them allows some trivial cleanup
> of some exit paths for some functions. These are also included in this
> patch. There is likely scope for further cleanup of both debugging and
> unwind paths. But let's leave that for another day.
>
> Only intended to change debug output, and only when CONFIG_IP_VS_DEBUG
> is enabled. Compile tested only.
Reviewed-by: Horatiu Vultur <horatiu.vultur@...rochip.com>
>
> Signed-off-by: Simon Horman <horms@...nel.org>
> ---
> include/net/ip_vs.h | 20 -------------
> net/netfilter/ipvs/ip_vs_core.c | 8 ------
> net/netfilter/ipvs/ip_vs_ctl.c | 26 +----------------
> net/netfilter/ipvs/ip_vs_sync.c | 5 ----
> net/netfilter/ipvs/ip_vs_xmit.c | 62 ++++++-----------------------------------
> 5 files changed, 9 insertions(+), 112 deletions(-)
>
> diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h
> index e20f1f92066d..a3adc246ee31 100644
> --- a/include/net/ip_vs.h
> +++ b/include/net/ip_vs.h
> @@ -265,26 +265,6 @@ static inline const char *ip_vs_dbg_addr(int af, char *buf, size_t buf_len,
> pr_err(msg, ##__VA_ARGS__); \
> } while (0)
>
> -#ifdef CONFIG_IP_VS_DEBUG
> -#define EnterFunction(level) \
> - do { \
> - if (level <= ip_vs_get_debug_level()) \
> - printk(KERN_DEBUG \
> - pr_fmt("Enter: %s, %s line %i\n"), \
> - __func__, __FILE__, __LINE__); \
> - } while (0)
> -#define LeaveFunction(level) \
> - do { \
> - if (level <= ip_vs_get_debug_level()) \
> - printk(KERN_DEBUG \
> - pr_fmt("Leave: %s, %s line %i\n"), \
> - __func__, __FILE__, __LINE__); \
> - } while (0)
> -#else
> -#define EnterFunction(level) do {} while (0)
> -#define LeaveFunction(level) do {} while (0)
> -#endif
> -
> /* The port number of FTP service (in network order). */
> #define FTPPORT cpu_to_be16(21)
> #define FTPDATA cpu_to_be16(20)
> diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c
> index 2fcc26507d69..cb83ca506c5c 100644
> --- a/net/netfilter/ipvs/ip_vs_core.c
> +++ b/net/netfilter/ipvs/ip_vs_core.c
> @@ -1140,7 +1140,6 @@ struct ip_vs_conn *ip_vs_new_conn_out(struct ip_vs_service *svc,
> __be16 vport;
> unsigned int flags;
>
> - EnterFunction(12);
> vaddr = &svc->addr;
> vport = svc->port;
> daddr = &iph->saddr;
> @@ -1208,7 +1207,6 @@ struct ip_vs_conn *ip_vs_new_conn_out(struct ip_vs_service *svc,
> IP_VS_DBG_ADDR(cp->af, &cp->vaddr), ntohs(cp->vport),
> IP_VS_DBG_ADDR(cp->af, &cp->daddr), ntohs(cp->dport),
> cp->flags, refcount_read(&cp->refcnt));
> - LeaveFunction(12);
> return cp;
> }
>
> @@ -1316,13 +1314,11 @@ handle_response(int af, struct sk_buff *skb, struct ip_vs_proto_data *pd,
> ip_vs_update_conntrack(skb, cp, 0);
> ip_vs_conn_put(cp);
>
> - LeaveFunction(11);
> return NF_ACCEPT;
>
> drop:
> ip_vs_conn_put(cp);
> kfree_skb(skb);
> - LeaveFunction(11);
> return NF_STOLEN;
> }
>
> @@ -1341,8 +1337,6 @@ ip_vs_out_hook(void *priv, struct sk_buff *skb, const struct nf_hook_state *stat
> int af = state->pf;
> struct sock *sk;
>
> - EnterFunction(11);
> -
> /* Already marked as IPVS request or reply? */
> if (skb->ipvs_property)
> return NF_ACCEPT;
> @@ -2365,7 +2359,6 @@ static void __net_exit __ip_vs_dev_cleanup_batch(struct list_head *net_list)
> struct netns_ipvs *ipvs;
> struct net *net;
>
> - EnterFunction(2);
> list_for_each_entry(net, net_list, exit_list) {
> ipvs = net_ipvs(net);
> ip_vs_unregister_hooks(ipvs, AF_INET);
> @@ -2374,7 +2367,6 @@ static void __net_exit __ip_vs_dev_cleanup_batch(struct list_head *net_list)
> smp_wmb();
> ip_vs_sync_net_cleanup(ipvs);
> }
> - LeaveFunction(2);
> }
>
> static struct pernet_operations ipvs_core_ops = {
> diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
> index 2a5ed71c82c3..62606fb44d02 100644
> --- a/net/netfilter/ipvs/ip_vs_ctl.c
> +++ b/net/netfilter/ipvs/ip_vs_ctl.c
> @@ -1061,8 +1061,6 @@ ip_vs_new_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> unsigned int atype;
> int ret;
>
> - EnterFunction(2);
> -
> #ifdef CONFIG_IP_VS_IPV6
> if (udest->af == AF_INET6) {
> atype = ipv6_addr_type(&udest->addr.in6);
> @@ -1111,7 +1109,6 @@ ip_vs_new_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> spin_lock_init(&dest->dst_lock);
> __ip_vs_update_dest(svc, dest, udest, 1);
>
> - LeaveFunction(2);
> return 0;
>
> err_stats:
> @@ -1134,8 +1131,6 @@ ip_vs_add_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> __be16 dport = udest->port;
> int ret;
>
> - EnterFunction(2);
> -
> if (udest->weight < 0) {
> pr_err("%s(): server weight less than zero\n", __func__);
> return -ERANGE;
> @@ -1183,7 +1178,7 @@ ip_vs_add_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
>
> ret = ip_vs_start_estimator(svc->ipvs, &dest->stats);
> if (ret < 0)
> - goto err;
> + return ret;
> __ip_vs_update_dest(svc, dest, udest, 1);
> } else {
> /*
> @@ -1192,9 +1187,6 @@ ip_vs_add_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> ret = ip_vs_new_dest(svc, udest);
> }
>
> -err:
> - LeaveFunction(2);
> -
> return ret;
> }
>
> @@ -1209,8 +1201,6 @@ ip_vs_edit_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> union nf_inet_addr daddr;
> __be16 dport = udest->port;
>
> - EnterFunction(2);
> -
> if (udest->weight < 0) {
> pr_err("%s(): server weight less than zero\n", __func__);
> return -ERANGE;
> @@ -1242,7 +1232,6 @@ ip_vs_edit_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> }
>
> __ip_vs_update_dest(svc, dest, udest, 0);
> - LeaveFunction(2);
>
> return 0;
> }
> @@ -1317,8 +1306,6 @@ ip_vs_del_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> struct ip_vs_dest *dest;
> __be16 dport = udest->port;
>
> - EnterFunction(2);
> -
> /* We use function that requires RCU lock */
> rcu_read_lock();
> dest = ip_vs_lookup_dest(svc, udest->af, &udest->addr, dport);
> @@ -1339,8 +1326,6 @@ ip_vs_del_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest)
> */
> __ip_vs_del_dest(svc->ipvs, dest, false);
>
> - LeaveFunction(2);
> -
> return 0;
> }
>
> @@ -1746,7 +1731,6 @@ void ip_vs_service_nets_cleanup(struct list_head *net_list)
> struct netns_ipvs *ipvs;
> struct net *net;
>
> - EnterFunction(2);
> /* Check for "full" addressed entries */
> mutex_lock(&__ip_vs_mutex);
> list_for_each_entry(net, net_list, exit_list) {
> @@ -1754,7 +1738,6 @@ void ip_vs_service_nets_cleanup(struct list_head *net_list)
> ip_vs_flush(ipvs, true);
> }
> mutex_unlock(&__ip_vs_mutex);
> - LeaveFunction(2);
> }
>
> /* Put all references for device (dst_cache) */
> @@ -1792,7 +1775,6 @@ static int ip_vs_dst_event(struct notifier_block *this, unsigned long event,
> if (event != NETDEV_DOWN || !ipvs)
> return NOTIFY_DONE;
> IP_VS_DBG(3, "%s() dev=%s\n", __func__, dev->name);
> - EnterFunction(2);
> mutex_lock(&__ip_vs_mutex);
> for (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) {
> hlist_for_each_entry(svc, &ip_vs_svc_table[idx], s_list) {
> @@ -1821,7 +1803,6 @@ static int ip_vs_dst_event(struct notifier_block *this, unsigned long event,
> }
> spin_unlock_bh(&ipvs->dest_trash_lock);
> mutex_unlock(&__ip_vs_mutex);
> - LeaveFunction(2);
> return NOTIFY_DONE;
> }
>
> @@ -4537,8 +4518,6 @@ int __init ip_vs_control_init(void)
> int idx;
> int ret;
>
> - EnterFunction(2);
> -
> /* Initialize svc_table, ip_vs_svc_fwm_table */
> for (idx = 0; idx < IP_VS_SVC_TAB_SIZE; idx++) {
> INIT_HLIST_HEAD(&ip_vs_svc_table[idx]);
> @@ -4551,15 +4530,12 @@ int __init ip_vs_control_init(void)
> if (ret < 0)
> return ret;
>
> - LeaveFunction(2);
> return 0;
> }
>
>
> void ip_vs_control_cleanup(void)
> {
> - EnterFunction(2);
> unregister_netdevice_notifier(&ip_vs_dst_notifier);
> /* relying on common rcu_barrier() in ip_vs_cleanup() */
> - LeaveFunction(2);
> }
> diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
> index d4fe7bb4f853..264f2f87a437 100644
> --- a/net/netfilter/ipvs/ip_vs_sync.c
> +++ b/net/netfilter/ipvs/ip_vs_sync.c
> @@ -1582,13 +1582,11 @@ ip_vs_send_async(struct socket *sock, const char *buffer, const size_t length)
> struct kvec iov;
> int len;
>
> - EnterFunction(7);
> iov.iov_base = (void *)buffer;
> iov.iov_len = length;
>
> len = kernel_sendmsg(sock, &msg, &iov, 1, (size_t)(length));
>
> - LeaveFunction(7);
> return len;
> }
>
> @@ -1614,15 +1612,12 @@ ip_vs_receive(struct socket *sock, char *buffer, const size_t buflen)
> struct kvec iov = {buffer, buflen};
> int len;
>
> - EnterFunction(7);
> -
> /* Receive a packet */
> iov_iter_kvec(&msg.msg_iter, ITER_DEST, &iov, 1, buflen);
> len = sock_recvmsg(sock, &msg, MSG_DONTWAIT);
> if (len < 0)
> return len;
>
> - LeaveFunction(7);
> return len;
> }
>
> diff --git a/net/netfilter/ipvs/ip_vs_xmit.c b/net/netfilter/ipvs/ip_vs_xmit.c
> index 99c349c0d968..feb1d7fcb09f 100644
> --- a/net/netfilter/ipvs/ip_vs_xmit.c
> +++ b/net/netfilter/ipvs/ip_vs_xmit.c
> @@ -706,8 +706,6 @@ ip_vs_bypass_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> {
> struct iphdr *iph = ip_hdr(skb);
>
> - EnterFunction(10);
> -
> if (__ip_vs_get_out_rt(cp->ipvs, cp->af, skb, NULL, iph->daddr,
> IP_VS_RT_MODE_NON_LOCAL, NULL, ipvsh) < 0)
> goto tx_error;
> @@ -719,12 +717,10 @@ ip_vs_bypass_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
>
> ip_vs_send_or_cont(NFPROTO_IPV4, skb, cp, 0);
>
> - LeaveFunction(10);
> return NF_STOLEN;
>
> tx_error:
> kfree_skb(skb);
> - LeaveFunction(10);
> return NF_STOLEN;
> }
>
> @@ -735,8 +731,6 @@ ip_vs_bypass_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> {
> struct ipv6hdr *iph = ipv6_hdr(skb);
>
> - EnterFunction(10);
> -
> if (__ip_vs_get_out_rt_v6(cp->ipvs, cp->af, skb, NULL,
> &iph->daddr, NULL,
> ipvsh, 0, IP_VS_RT_MODE_NON_LOCAL) < 0)
> @@ -747,12 +741,10 @@ ip_vs_bypass_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
>
> ip_vs_send_or_cont(NFPROTO_IPV6, skb, cp, 0);
>
> - LeaveFunction(10);
> return NF_STOLEN;
>
> tx_error:
> kfree_skb(skb);
> - LeaveFunction(10);
> return NF_STOLEN;
> }
> #endif
> @@ -768,8 +760,6 @@ ip_vs_nat_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> struct rtable *rt; /* Route to the other host */
> int local, rc, was_input;
>
> - EnterFunction(10);
> -
> /* check if it is a connection of no-client-port */
> if (unlikely(cp->flags & IP_VS_CONN_F_NO_CPORT)) {
> __be16 _pt, *p;
> @@ -839,12 +829,10 @@ ip_vs_nat_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
>
> rc = ip_vs_nat_send_or_cont(NFPROTO_IPV4, skb, cp, local);
>
> - LeaveFunction(10);
> return rc;
>
> tx_error:
> kfree_skb(skb);
> - LeaveFunction(10);
> return NF_STOLEN;
> }
>
> @@ -856,8 +844,6 @@ ip_vs_nat_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> struct rt6_info *rt; /* Route to the other host */
> int local, rc;
>
> - EnterFunction(10);
> -
> /* check if it is a connection of no-client-port */
> if (unlikely(cp->flags & IP_VS_CONN_F_NO_CPORT && !ipvsh->fragoffs)) {
> __be16 _pt, *p;
> @@ -927,11 +913,9 @@ ip_vs_nat_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
>
> rc = ip_vs_nat_send_or_cont(NFPROTO_IPV6, skb, cp, local);
>
> - LeaveFunction(10);
> return rc;
>
> tx_error:
> - LeaveFunction(10);
> kfree_skb(skb);
> return NF_STOLEN;
> }
> @@ -1149,8 +1133,6 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> int tun_type, gso_type;
> int tun_flags;
>
> - EnterFunction(10);
> -
> local = __ip_vs_get_out_rt(ipvs, cp->af, skb, cp->dest, cp->daddr.ip,
> IP_VS_RT_MODE_LOCAL |
> IP_VS_RT_MODE_NON_LOCAL |
> @@ -1199,7 +1181,7 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> &next_protocol, NULL, &dsfield,
> &ttl, dfp);
> if (IS_ERR(skb))
> - goto tx_error;
> + return NF_STOLEN;
>
> gso_type = __tun_gso_type_mask(AF_INET, cp->af);
> if (tun_type == IP_VS_CONN_F_TUNNEL_TYPE_GUE) {
> @@ -1267,14 +1249,10 @@ ip_vs_tunnel_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> else if (ret == NF_DROP)
> kfree_skb(skb);
>
> - LeaveFunction(10);
> -
> return NF_STOLEN;
>
> tx_error:
> - if (!IS_ERR(skb))
> - kfree_skb(skb);
> - LeaveFunction(10);
> + kfree_skb(skb);
> return NF_STOLEN;
> }
>
> @@ -1298,8 +1276,6 @@ ip_vs_tunnel_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> int tun_type, gso_type;
> int tun_flags;
>
> - EnterFunction(10);
> -
> local = __ip_vs_get_out_rt_v6(ipvs, cp->af, skb, cp->dest,
> &cp->daddr.in6,
> &saddr, ipvsh, 1,
> @@ -1347,7 +1323,7 @@ ip_vs_tunnel_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> &next_protocol, &payload_len,
> &dsfield, &ttl, NULL);
> if (IS_ERR(skb))
> - goto tx_error;
> + return NF_STOLEN;
>
> gso_type = __tun_gso_type_mask(AF_INET6, cp->af);
> if (tun_type == IP_VS_CONN_F_TUNNEL_TYPE_GUE) {
> @@ -1414,14 +1390,10 @@ ip_vs_tunnel_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> else if (ret == NF_DROP)
> kfree_skb(skb);
>
> - LeaveFunction(10);
> -
> return NF_STOLEN;
>
> tx_error:
> - if (!IS_ERR(skb))
> - kfree_skb(skb);
> - LeaveFunction(10);
> + kfree_skb(skb);
> return NF_STOLEN;
> }
> #endif
> @@ -1437,8 +1409,6 @@ ip_vs_dr_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> {
> int local;
>
> - EnterFunction(10);
> -
> local = __ip_vs_get_out_rt(cp->ipvs, cp->af, skb, cp->dest, cp->daddr.ip,
> IP_VS_RT_MODE_LOCAL |
> IP_VS_RT_MODE_NON_LOCAL |
> @@ -1455,12 +1425,10 @@ ip_vs_dr_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
>
> ip_vs_send_or_cont(NFPROTO_IPV4, skb, cp, 0);
>
> - LeaveFunction(10);
> return NF_STOLEN;
>
> tx_error:
> kfree_skb(skb);
> - LeaveFunction(10);
> return NF_STOLEN;
> }
>
> @@ -1471,8 +1439,6 @@ ip_vs_dr_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> {
> int local;
>
> - EnterFunction(10);
> -
> local = __ip_vs_get_out_rt_v6(cp->ipvs, cp->af, skb, cp->dest,
> &cp->daddr.in6,
> NULL, ipvsh, 0,
> @@ -1489,12 +1455,10 @@ ip_vs_dr_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
>
> ip_vs_send_or_cont(NFPROTO_IPV6, skb, cp, 0);
>
> - LeaveFunction(10);
> return NF_STOLEN;
>
> tx_error:
> kfree_skb(skb);
> - LeaveFunction(10);
> return NF_STOLEN;
> }
> #endif
> @@ -1514,8 +1478,6 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> int local;
> int rt_mode, was_input;
>
> - EnterFunction(10);
> -
> /* The ICMP packet for VS/TUN, VS/DR and LOCALNODE will be
> forwarded directly here, because there is no need to
> translate address/port back */
> @@ -1526,7 +1488,7 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> rc = NF_ACCEPT;
> /* do not touch skb anymore */
> atomic_inc(&cp->in_pkts);
> - goto out;
> + return rc;
> }
>
> /*
> @@ -1582,14 +1544,11 @@ ip_vs_icmp_xmit(struct sk_buff *skb, struct ip_vs_conn *cp,
> /* Another hack: avoid icmp_send in ip_fragment */
> skb->ignore_df = 1;
>
> - rc = ip_vs_nat_send_or_cont(NFPROTO_IPV4, skb, cp, local);
> - goto out;
> + return ip_vs_nat_send_or_cont(NFPROTO_IPV4, skb, cp, local);
>
> tx_error:
> kfree_skb(skb);
> rc = NF_STOLEN;
> - out:
> - LeaveFunction(10);
> return rc;
> }
>
> @@ -1604,8 +1563,6 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> int local;
> int rt_mode;
>
> - EnterFunction(10);
> -
> /* The ICMP packet for VS/TUN, VS/DR and LOCALNODE will be
> forwarded directly here, because there is no need to
> translate address/port back */
> @@ -1616,7 +1573,7 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> rc = NF_ACCEPT;
> /* do not touch skb anymore */
> atomic_inc(&cp->in_pkts);
> - goto out;
> + return rc;
> }
>
> /*
> @@ -1671,14 +1628,11 @@ ip_vs_icmp_xmit_v6(struct sk_buff *skb, struct ip_vs_conn *cp,
> /* Another hack: avoid icmp_send in ip_fragment */
> skb->ignore_df = 1;
>
> - rc = ip_vs_nat_send_or_cont(NFPROTO_IPV6, skb, cp, local);
> - goto out;
> + return ip_vs_nat_send_or_cont(NFPROTO_IPV6, skb, cp, local);
>
> tx_error:
> kfree_skb(skb);
> rc = NF_STOLEN;
> -out:
> - LeaveFunction(10);
> return rc;
> }
> #endif
>
> --
> 2.30.2
>
--
/Horatiu
Powered by blists - more mailing lists