Cleanup: Remove deprecated TODO file
[lttng-modules.git] / instrumentation / syscalls / headers / x86-64-syscalls_pointers_override.h
CommitLineData
b7cdc182 1/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only) */
6314c2d3 2
cac8f1aa
MD
3#ifndef CREATE_SYSCALL_TABLE
4
7ca580f8 5#define OVERRIDE_64_connect
cb3ef14c 6SC_LTTNG_TRACEPOINT_EVENT_CODE(connect,
bcf18411 7 TP_PROTO(sc_exit(long ret,) int fd, struct sockaddr __user * uservaddr, int addrlen),
7ca580f8
MD
8 TP_ARGS(sc_exit(ret,) fd, uservaddr, addrlen),
9 TP_locvar(
10 __typeof__(uservaddr->sa_family) sa_family;
11 uint16_t dport;
12 uint32_t v4addr;
13 uint16_t v6addr[8];
5e6f60b2 14 unsigned int v4addr_len, v6addr_len;
7ca580f8 15 ),
265822ae 16 TP_code_pre(
7ca580f8
MD
17 sc_in(
18 memset(tp_locvar, 0, sizeof(*tp_locvar));
5a561ac3 19 if (addrlen < sizeof(tp_locvar->sa_family))
7ca580f8 20 goto skip_code;
bcf18411
MD
21 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->sa_family,
22 &uservaddr->sa_family, sizeof(tp_locvar->sa_family));
7ca580f8
MD
23 switch (tp_locvar->sa_family) {
24 case AF_INET:
25 if (addrlen < sizeof(struct sockaddr_in))
26 goto skip_code;
bcf18411
MD
27 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->dport,
28 &((struct sockaddr_in __user *) uservaddr)->sin_port,
29 sizeof(tp_locvar->dport));
30 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->v4addr,
31 &((struct sockaddr_in __user *) uservaddr)->sin_addr.s_addr,
32 sizeof(tp_locvar->v4addr));
7ca580f8
MD
33 tp_locvar->v4addr_len = 4;
34 break;
35 case AF_INET6:
36 if (addrlen < sizeof(struct sockaddr_in6))
37 goto skip_code;
bcf18411
MD
38 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->dport,
39 &((struct sockaddr_in6 __user *) uservaddr)->sin6_port,
40 sizeof(tp_locvar->dport));
41 if (lib_ring_buffer_copy_from_user_check_nofault(tp_locvar->v6addr,
42 &((struct sockaddr_in6 __user *) uservaddr)->sin6_addr.in6_u.u6_addr8,
b43aa94e
MD
43 sizeof(tp_locvar->v6addr)))
44 memset(tp_locvar->v6addr, 0, sizeof(tp_locvar->v6addr));
7ca580f8
MD
45 tp_locvar->v6addr_len = 8;
46 break;
47 }
48 skip_code:
49 )
50 ),
57ede728
MD
51 TP_FIELDS(
52 sc_exit(ctf_integer(long, ret, ret))
53 sc_in(ctf_integer(int, fd, fd))
54 sc_in(ctf_integer_hex(struct sockaddr *, uservaddr, uservaddr))
55 sc_in(ctf_integer_hex(int, addrlen, addrlen))
205f99b0 56 sc_in(ctf_integer(unsigned short, family, tp_locvar->sa_family))
57ede728 57 sc_in(ctf_integer_network(uint16_t, dport, tp_locvar->dport))
5e6f60b2
MD
58 sc_in(ctf_sequence_network(uint8_t, v4addr, &tp_locvar->v4addr, unsigned int, tp_locvar->v4addr_len))
59 sc_in(ctf_sequence_network(uint16_t, v6addr, &tp_locvar->v6addr, unsigned int, tp_locvar->v6addr_len))
265822ae
MD
60 ),
61 TP_code_post()
7ca580f8
MD
62)
63
223d33f2
JG
64#define LTTNG_SYSCALL_ACCEPT_locvar \
65 __typeof__(upeer_sockaddr->sa_family) sa_family;\
66 uint16_t sport; \
67 uint32_t v4addr; \
68 uint16_t v6addr[8]; \
69 int v4addr_len, v6addr_len; \
70 int uaddr_len;
71
72#define LTTNG_SYSCALL_ACCEPT_code_pre \
73 sc_inout( \
74 memset(tp_locvar, 0, sizeof(*tp_locvar)); \
bcf18411
MD
75 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->uaddr_len, \
76 upeer_addrlen, sizeof(tp_locvar->uaddr_len)); \
223d33f2
JG
77 ) \
78 sc_out( \
5a561ac3 79 if (tp_locvar->uaddr_len < sizeof(tp_locvar->sa_family)) \
223d33f2 80 goto skip_code; \
bcf18411
MD
81 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->sa_family, \
82 &upeer_sockaddr->sa_family, sizeof(tp_locvar->sa_family)); \
223d33f2
JG
83 switch (tp_locvar->sa_family) { \
84 case AF_INET: \
85 if (tp_locvar->uaddr_len < sizeof(struct sockaddr_in)) \
86 goto skip_code; \
bcf18411
MD
87 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->sport, \
88 &((struct sockaddr_in __user *) upeer_sockaddr)->sin_port, \
89 sizeof(tp_locvar->sport)); \
90 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->v4addr, \
91 &((struct sockaddr_in __user *) upeer_sockaddr)->sin_addr.s_addr, \
92 sizeof(tp_locvar->v4addr)); \
223d33f2
JG
93 tp_locvar->v4addr_len = 4; \
94 break; \
95 case AF_INET6: \
96 if (tp_locvar->uaddr_len < sizeof(struct sockaddr_in6)) \
97 goto skip_code; \
bcf18411
MD
98 (void) lib_ring_buffer_copy_from_user_check_nofault(&tp_locvar->sport, \
99 &((struct sockaddr_in6 __user *) upeer_sockaddr)->sin6_port, \
100 sizeof(tp_locvar->sport)); \
101 if (lib_ring_buffer_copy_from_user_check_nofault(tp_locvar->v6addr, \
102 &((struct sockaddr_in6 __user *) upeer_sockaddr)->sin6_addr.in6_u.u6_addr8, \
223d33f2
JG
103 sizeof(tp_locvar->v6addr))) \
104 memset(tp_locvar->v6addr, 0, sizeof(tp_locvar->v6addr)); \
105 tp_locvar->v6addr_len = 8; \
106 break; \
107 } \
108 skip_code: \
109 )
110
7ca580f8 111#define OVERRIDE_64_accept
cb3ef14c 112SC_LTTNG_TRACEPOINT_EVENT_CODE(accept,
bcf18411 113 TP_PROTO(sc_exit(long ret,) int fd, struct sockaddr __user * upeer_sockaddr, int __user * upeer_addrlen),
7ca580f8
MD
114 TP_ARGS(sc_exit(ret,) fd, upeer_sockaddr, upeer_addrlen),
115 TP_locvar(
223d33f2 116 LTTNG_SYSCALL_ACCEPT_locvar
7ca580f8 117 ),
265822ae 118 TP_code_pre(
223d33f2 119 LTTNG_SYSCALL_ACCEPT_code_pre
7ca580f8 120 ),
57ede728
MD
121 TP_FIELDS(
122 sc_exit(ctf_integer(long, ret, ret))
123 sc_in(ctf_integer(int, fd, fd))
124 sc_in(ctf_integer_hex(struct sockaddr *, upeer_sockaddr, upeer_sockaddr))
125 sc_inout(ctf_integer(int, upeer_addrlen, tp_locvar->uaddr_len))
205f99b0 126 sc_out(ctf_integer(unsigned short, family, tp_locvar->sa_family))
57ede728 127 sc_out(ctf_integer_network(uint16_t, sport, tp_locvar->sport))
b0f393f2
MD
128 sc_out(ctf_sequence_network(uint8_t, v4addr, &tp_locvar->v4addr, unsigned int, tp_locvar->v4addr_len))
129 sc_out(ctf_sequence_network(uint16_t, v6addr, &tp_locvar->v6addr, unsigned int, tp_locvar->v6addr_len))
265822ae
MD
130 ),
131 TP_code_post()
7ca580f8
MD
132)
133
2a837c70
JG
134#define OVERRIDE_64_accept4
135SC_LTTNG_TRACEPOINT_EVENT_CODE(accept4,
bcf18411 136 TP_PROTO(sc_exit(long ret,) int fd, struct sockaddr __user * upeer_sockaddr, int __user * upeer_addrlen, int flags),
2a837c70
JG
137 TP_ARGS(sc_exit(ret,) fd, upeer_sockaddr, upeer_addrlen, flags),
138 TP_locvar(
223d33f2 139 LTTNG_SYSCALL_ACCEPT_locvar
2a837c70
JG
140 ),
141 TP_code_pre(
223d33f2 142 LTTNG_SYSCALL_ACCEPT_code_pre
2a837c70
JG
143 ),
144 TP_FIELDS(
145 sc_exit(ctf_integer(long, ret, ret))
146 sc_in(ctf_integer(int, fd, fd))
147 sc_in(ctf_integer_hex(struct sockaddr *, upeer_sockaddr, upeer_sockaddr))
148 sc_inout(ctf_integer(int, upeer_addrlen, tp_locvar->uaddr_len))
149 sc_in(ctf_integer_hex(int, flags, flags))
205f99b0 150 sc_out(ctf_integer(unsigned short, family, tp_locvar->sa_family))
2a837c70
JG
151 sc_out(ctf_integer_network(uint16_t, sport, tp_locvar->sport))
152 sc_out(ctf_sequence_network(uint8_t, v4addr, &tp_locvar->v4addr, unsigned int, tp_locvar->v4addr_len))
153 sc_out(ctf_sequence_network(uint16_t, v6addr, &tp_locvar->v6addr, unsigned int, tp_locvar->v6addr_len))
154 ),
155 TP_code_post()
156)
157
5539ecc8
LP
158#define OVERRIDE_64_pipe
159SC_LTTNG_TRACEPOINT_EVENT(pipe,
160 TP_PROTO(sc_exit(long ret,) int * fildes),
161 TP_ARGS(sc_exit(ret,) fildes),
162 TP_FIELDS(sc_exit(ctf_integer(long, ret, ret))
163 sc_out(ctf_user_array(int, fildes, fildes, 2))
164 )
165)
166
cac8f1aa
MD
167#else /* CREATE_SYSCALL_TABLE */
168
644d6e9c
MD
169#define OVERRIDE_TABLE_64_clone
170TRACE_SYSCALL_TABLE(clone, clone, 56, 5)
171#define OVERRIDE_TABLE_64_execve
172TRACE_SYSCALL_TABLE(execve, execve, 59, 3)
173#define OVERRIDE_TABLE_64_getcpu
174TRACE_SYSCALL_TABLE(getcpu, getcpu, 309, 3)
e42e81fd 175
cac8f1aa 176#endif /* CREATE_SYSCALL_TABLE */
This page took 0.044595 seconds and 4 git commands to generate.