Skip to content

Commit 6a6b0b9

Browse files
mjmartineaudavem330
authored andcommitted
tcp: Avoid preprocessor directives in tracepoint macro args
Using a preprocessor directive to check for CONFIG_IPV6 in the middle of a DECLARE_EVENT_CLASS macro's arg list causes sparse to report a series of errors: ./include/trace/events/tcp.h:68:1: error: directive in argument list ./include/trace/events/tcp.h:75:1: error: directive in argument list ./include/trace/events/tcp.h:144:1: error: directive in argument list ./include/trace/events/tcp.h:151:1: error: directive in argument list ./include/trace/events/tcp.h:216:1: error: directive in argument list ./include/trace/events/tcp.h:223:1: error: directive in argument list ./include/trace/events/tcp.h:274:1: error: directive in argument list ./include/trace/events/tcp.h:281:1: error: directive in argument list Once sparse finds an error, it stops printing warnings for the file it is checking. This masks any sparse warnings that would normally be reported for the core TCP code. Instead, handle the preprocessor conditionals in a couple of auxiliary macros. This also has the benefit of reducing duplicate code. Cc: David Ahern <[email protected]> Signed-off-by: Mat Martineau <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 3a33a19 commit 6a6b0b9

File tree

1 file changed

+37
-60
lines changed
  • include/trace/events

1 file changed

+37
-60
lines changed

include/trace/events/tcp.h

Lines changed: 37 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,35 @@
2525
tcp_state_name(TCP_CLOSING), \
2626
tcp_state_name(TCP_NEW_SYN_RECV))
2727

28+
#define TP_STORE_V4MAPPED(__entry, saddr, daddr) \
29+
do { \
30+
struct in6_addr *pin6; \
31+
\
32+
pin6 = (struct in6_addr *)__entry->saddr_v6; \
33+
ipv6_addr_set_v4mapped(saddr, pin6); \
34+
pin6 = (struct in6_addr *)__entry->daddr_v6; \
35+
ipv6_addr_set_v4mapped(daddr, pin6); \
36+
} while (0)
37+
38+
#if IS_ENABLED(CONFIG_IPV6)
39+
#define TP_STORE_ADDRS(__entry, saddr, daddr, saddr6, daddr6) \
40+
do { \
41+
if (sk->sk_family == AF_INET6) { \
42+
struct in6_addr *pin6; \
43+
\
44+
pin6 = (struct in6_addr *)__entry->saddr_v6; \
45+
*pin6 = saddr6; \
46+
pin6 = (struct in6_addr *)__entry->daddr_v6; \
47+
*pin6 = daddr6; \
48+
} else { \
49+
TP_STORE_V4MAPPED(__entry, saddr, daddr); \
50+
} \
51+
} while (0)
52+
#else
53+
#define TP_STORE_ADDRS(__entry, saddr, daddr, saddr6, daddr6) \
54+
TP_STORE_V4MAPPED(__entry, saddr, daddr)
55+
#endif
56+
2857
/*
2958
* tcp event with arguments sk and skb
3059
*
@@ -50,7 +79,6 @@ DECLARE_EVENT_CLASS(tcp_event_sk_skb,
5079

5180
TP_fast_assign(
5281
struct inet_sock *inet = inet_sk(sk);
53-
struct in6_addr *pin6;
5482
__be32 *p32;
5583

5684
__entry->skbaddr = skb;
@@ -65,20 +93,8 @@ DECLARE_EVENT_CLASS(tcp_event_sk_skb,
6593
p32 = (__be32 *) __entry->daddr;
6694
*p32 = inet->inet_daddr;
6795

68-
#if IS_ENABLED(CONFIG_IPV6)
69-
if (sk->sk_family == AF_INET6) {
70-
pin6 = (struct in6_addr *)__entry->saddr_v6;
71-
*pin6 = sk->sk_v6_rcv_saddr;
72-
pin6 = (struct in6_addr *)__entry->daddr_v6;
73-
*pin6 = sk->sk_v6_daddr;
74-
} else
75-
#endif
76-
{
77-
pin6 = (struct in6_addr *)__entry->saddr_v6;
78-
ipv6_addr_set_v4mapped(inet->inet_saddr, pin6);
79-
pin6 = (struct in6_addr *)__entry->daddr_v6;
80-
ipv6_addr_set_v4mapped(inet->inet_daddr, pin6);
81-
}
96+
TP_STORE_ADDRS(__entry, inet->inet_saddr, inet->inet_daddr,
97+
sk->sk_v6_rcv_saddr, sk->sk_v6_daddr);
8298
),
8399

84100
TP_printk("sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c",
@@ -127,7 +143,6 @@ DECLARE_EVENT_CLASS(tcp_event_sk,
127143

128144
TP_fast_assign(
129145
struct inet_sock *inet = inet_sk(sk);
130-
struct in6_addr *pin6;
131146
__be32 *p32;
132147

133148
__entry->skaddr = sk;
@@ -141,20 +156,8 @@ DECLARE_EVENT_CLASS(tcp_event_sk,
141156
p32 = (__be32 *) __entry->daddr;
142157
*p32 = inet->inet_daddr;
143158

144-
#if IS_ENABLED(CONFIG_IPV6)
145-
if (sk->sk_family == AF_INET6) {
146-
pin6 = (struct in6_addr *)__entry->saddr_v6;
147-
*pin6 = sk->sk_v6_rcv_saddr;
148-
pin6 = (struct in6_addr *)__entry->daddr_v6;
149-
*pin6 = sk->sk_v6_daddr;
150-
} else
151-
#endif
152-
{
153-
pin6 = (struct in6_addr *)__entry->saddr_v6;
154-
ipv6_addr_set_v4mapped(inet->inet_saddr, pin6);
155-
pin6 = (struct in6_addr *)__entry->daddr_v6;
156-
ipv6_addr_set_v4mapped(inet->inet_daddr, pin6);
157-
}
159+
TP_STORE_ADDRS(__entry, inet->inet_saddr, inet->inet_daddr,
160+
sk->sk_v6_rcv_saddr, sk->sk_v6_daddr);
158161
),
159162

160163
TP_printk("sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c",
@@ -197,7 +200,6 @@ TRACE_EVENT(tcp_set_state,
197200

198201
TP_fast_assign(
199202
struct inet_sock *inet = inet_sk(sk);
200-
struct in6_addr *pin6;
201203
__be32 *p32;
202204

203205
__entry->skaddr = sk;
@@ -213,20 +215,8 @@ TRACE_EVENT(tcp_set_state,
213215
p32 = (__be32 *) __entry->daddr;
214216
*p32 = inet->inet_daddr;
215217

216-
#if IS_ENABLED(CONFIG_IPV6)
217-
if (sk->sk_family == AF_INET6) {
218-
pin6 = (struct in6_addr *)__entry->saddr_v6;
219-
*pin6 = sk->sk_v6_rcv_saddr;
220-
pin6 = (struct in6_addr *)__entry->daddr_v6;
221-
*pin6 = sk->sk_v6_daddr;
222-
} else
223-
#endif
224-
{
225-
pin6 = (struct in6_addr *)__entry->saddr_v6;
226-
ipv6_addr_set_v4mapped(inet->inet_saddr, pin6);
227-
pin6 = (struct in6_addr *)__entry->daddr_v6;
228-
ipv6_addr_set_v4mapped(inet->inet_daddr, pin6);
229-
}
218+
TP_STORE_ADDRS(__entry, inet->inet_saddr, inet->inet_daddr,
219+
sk->sk_v6_rcv_saddr, sk->sk_v6_daddr);
230220
),
231221

232222
TP_printk("sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c oldstate=%s newstate=%s",
@@ -256,7 +246,6 @@ TRACE_EVENT(tcp_retransmit_synack,
256246

257247
TP_fast_assign(
258248
struct inet_request_sock *ireq = inet_rsk(req);
259-
struct in6_addr *pin6;
260249
__be32 *p32;
261250

262251
__entry->skaddr = sk;
@@ -271,20 +260,8 @@ TRACE_EVENT(tcp_retransmit_synack,
271260
p32 = (__be32 *) __entry->daddr;
272261
*p32 = ireq->ir_rmt_addr;
273262

274-
#if IS_ENABLED(CONFIG_IPV6)
275-
if (sk->sk_family == AF_INET6) {
276-
pin6 = (struct in6_addr *)__entry->saddr_v6;
277-
*pin6 = ireq->ir_v6_loc_addr;
278-
pin6 = (struct in6_addr *)__entry->daddr_v6;
279-
*pin6 = ireq->ir_v6_rmt_addr;
280-
} else
281-
#endif
282-
{
283-
pin6 = (struct in6_addr *)__entry->saddr_v6;
284-
ipv6_addr_set_v4mapped(ireq->ir_loc_addr, pin6);
285-
pin6 = (struct in6_addr *)__entry->daddr_v6;
286-
ipv6_addr_set_v4mapped(ireq->ir_rmt_addr, pin6);
287-
}
263+
TP_STORE_ADDRS(__entry, ireq->ir_loc_addr, ireq->ir_rmt_addr,
264+
ireq->ir_v6_loc_addr, ireq->ir_v6_rmt_addr);
288265
),
289266

290267
TP_printk("sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c",

0 commit comments

Comments
 (0)