diff --git a/drivers/hck/vendor_hooks.c b/drivers/hck/vendor_hooks.c index 4fd1a37c61e7a375d4d9b3c62da4f4a6f2eb6b05..7bea8ddcaaa8bac1809c83c5775586d2fd8024d3 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 07a0263ffc3b0b9dab9bd0d351574e6777dd8d03..939146da879cf3fcd9576cb7a7d227773b096513 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 0000000000000000000000000000000000000000..745f93f1be3a9a0ff9ec292ea730841f0ca29358 --- /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 e5b92e6f34c00f217ba0afdc5ef95495497ddf29..0000000000000000000000000000000000000000 --- 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 eac054ea3100b898fb965e108a4b211fe4ccfad8..4576ba7b62c612cdfb545dd4aedbe184be521c41 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 5e084f8f64edcd44c600b796180dbe1a61da809b..23cd1dce49f31f423fb89bc55398a92e9df1893d 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),