From 07979643cd5039f1164b49a39edf7e743ec4cb06 Mon Sep 17 00:00:00 2001 From: liangbotong Date: Wed, 21 Jun 2023 16:14:08 +0800 Subject: [PATCH] vendor: add HCK lite vendor hook for inet Signed-off-by: liangbotong --- drivers/hck/vendor_hooks.c | 1 + drivers/hooks/vendor_hooks.c | 3 --- include/linux/hck/lite_hck_inet.h | 34 +++++++++++++++++++++++++++++++ include/trace/hooks/inet.h | 28 ------------------------- net/ipv4/devinet.c | 4 ++-- net/ipv4/inet_hashtables.c | 12 +++++------ 6 files changed, 42 insertions(+), 40 deletions(-) create mode 100644 include/linux/hck/lite_hck_inet.h delete mode 100755 include/trace/hooks/inet.h diff --git a/drivers/hck/vendor_hooks.c b/drivers/hck/vendor_hooks.c index 4fd1a37c61e7..7bea8ddcaaa8 100644 --- a/drivers/hck/vendor_hooks.c +++ b/drivers/hck/vendor_hooks.c @@ -10,3 +10,4 @@ /* add your lite vendor hook header file here */ #include #include +#include diff --git a/drivers/hooks/vendor_hooks.c b/drivers/hooks/vendor_hooks.c index 07a0263ffc3b..939146da879c 100644 --- a/drivers/hooks/vendor_hooks.c +++ b/drivers/hooks/vendor_hooks.c @@ -10,7 +10,6 @@ #define CREATE_TRACE_POINTS #include #include -#include /* * Export tracepoints that act as a bare tracehook(ie: have no trace event @@ -22,5 +21,3 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(vendor_do_mmap); EXPORT_TRACEPOINT_SYMBOL_GPL(vendor_do_mprotect_pkey); -EXPORT_TRACEPOINT_SYMBOL_GPL(vendor_ninet_ehashfn); -EXPORT_TRACEPOINT_SYMBOL_GPL(vendor_ninet_gifconf); diff --git a/include/linux/hck/lite_hck_inet.h b/include/linux/hck/lite_hck_inet.h new file mode 100644 index 000000000000..745f93f1be3a --- /dev/null +++ b/include/linux/hck/lite_hck_inet.h @@ -0,0 +1,34 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + */ + +#ifndef LITE_HCK_INET_H +#define LITE_HCK_INET_H + +#include +#include + +/* + * Follwing tracepoints are not exported in trace and provide a + * mechanism for vendor modules to hok and extend functionality + */ +#ifndef CONFIG_HCK + +#define CALL_HCK_LITE_HOOK(name, args...) +#define REGISTER_HCK_LITE_HOOK(name, probe) +#define REGISTER_HCK_LITE_DATA_HOOK(name, probe, data) + +#else + +DECLARE_HCK_LITE_HOOK(nip_ninet_ehashfn_lhck, + TP_PROTO(const struct sock *sk, u32 *ret), + TP_ARGS(sk, ret)); + +DECLARE_HCK_LITE_HOOK(nip_ninet_gifconf_lhck, + TP_PROTO(struct net_device *dev, char __user *buf, int len, int size, int *ret), + TP_ARGS(dev, buf, len, size, ret)); + +#endif /* CONFIG_HCK */ + +#endif /* LITE_HCK_INET_H */ diff --git a/include/trace/hooks/inet.h b/include/trace/hooks/inet.h deleted file mode 100755 index e5b92e6f34c0..000000000000 --- a/include/trace/hooks/inet.h +++ /dev/null @@ -1,28 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* Copyright (c) 2023 Huawei Device Co., Ltd. */ - -#undef TRACE_SYSTEM -#define TRACE_SYSTEM inet - -#define TRACE_INCLUDE_PATH trace/hooks -#if !defined(_TRACE_HOOK_INET_H) || defined(TRACE_HEADER_MULTI_READ) -#define _TRACE_HOOK_INET_H - -#include -#include - -DECLARE_HOOK(vendor_ninet_ehashfn, - TP_PROTO(const struct sock *sk, u32 *ret), - TP_ARGS(sk, ret) -); - -DECLARE_HOOK(vendor_ninet_gifconf, - TP_PROTO(struct net_device *dev, char __user *buf, int len, int size, int *ret), - TP_ARGS(dev, buf, len, size, ret) -); - -#endif - -/* This part must be outside protection */ -#include - diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index eac054ea3100..4576ba7b62c6 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -48,6 +48,7 @@ #include #include #include +#include #ifdef CONFIG_SYSCTL #include #endif @@ -61,7 +62,6 @@ #include #include #include -#include #define IPV6ONLY_FLAGS \ (IFA_F_NODAD | IFA_F_OPTIMISTIC | IFA_F_DADFAILED | \ @@ -1279,7 +1279,7 @@ int inet_gifconf(struct net_device *dev, char __user *buf, int len, int size) len -= size; done += size; } - trace_vendor_ninet_gifconf(dev, buf, len, size, &done); + CALL_HCK_LITE_HOOK(nip_ninet_gifconf_lhck, dev, buf, len, size, &done); out: return done; } diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c index 5e084f8f64ed..23cd1dce49f3 100644 --- a/net/ipv4/inet_hashtables.c +++ b/net/ipv4/inet_hashtables.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -23,7 +24,6 @@ #if IS_ENABLED(CONFIG_IPV6) #include #endif -#include #include #include #include @@ -54,13 +54,11 @@ static u32 sk_ehashfn(const struct sock *sk) &sk->sk_v6_daddr, sk->sk_dport); #endif - if (trace_vendor_ninet_ehashfn_enabled()) { - if (sk->sk_family == AF_NINET) { - u32 ret = 0; + if (sk->sk_family == AF_NINET) { + u32 ret = 0; - trace_vendor_ninet_ehashfn(sk, &ret); - return ret; - } + CALL_HCK_LITE_HOOK(nip_ninet_ehashfn_lhck, sk, &ret); + return ret; } return inet_ehashfn(sock_net(sk), -- Gitee