The following error is being seen the perf tools because they have their own copies of a lot of kernel headers: In file included from builtin-trace.c:907: trace/beauty/msg_flags.c: In function 'syscall_arg__scnprintf_msg_flags': trace/beauty/msg_flags.c:28:21: error: 'MSG_SPLICE_PAGES' undeclared (first use in this function) 28 | if (flags & MSG_##n) { \ | ^~~~ trace/beauty/msg_flags.c:50:9: note: in expansion of macro 'P_MSG_FLAG' 50 | P_MSG_FLAG(SPLICE_PAGES); | ^~~~~~~~~~ trace/beauty/msg_flags.c:28:21: note: each undeclared identifier is reported only once for each function it appears in 28 | if (flags & MSG_##n) { \ | ^~~~ trace/beauty/msg_flags.c:50:9: note: in expansion of macro 'P_MSG_FLAG' 50 | P_MSG_FLAG(SPLICE_PAGES); | ^~~~~~~~~~ Fix this by (1) adding MSG_SPLICE_PAGES to tools/perf/trace/beauty/include/linux/socket.h - which looks like it ought to work, but doesn't, and (2) defining it conditionally in the file on which the error occurs (suggested by Matthieu Baerts - this is also done for some other flags). Fixes: b848b26c6672 ("net: Kill MSG_SENDPAGE_NOTLAST") Reported-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Link: https://lore.kernel.org/r/20230626112847.2ef3d422@xxxxxxxxxxxxxxxx/ Signed-off-by: David Howells <dhowells@xxxxxxxxxx> cc: Matthieu Baerts <matthieu.baerts@xxxxxxxxxxxx> cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> cc: "David S. Miller" <davem@xxxxxxxxxxxxx> cc: Eric Dumazet <edumazet@xxxxxxxxxx> cc: Jakub Kicinski <kuba@xxxxxxxxxx> cc: Paolo Abeni <pabeni@xxxxxxxxxx> cc: Jens Axboe <axboe@xxxxxxxxx> cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> cc: bpf@xxxxxxxxxxxxxxx cc: dccp@xxxxxxxxxxxxxxx cc: linux-crypto@xxxxxxxxxxxxxxx cc: mptcp@xxxxxxxxxxxxxxx cc: netdev@xxxxxxxxxxxxxxx cc: tipc-discussion@xxxxxxxxxxxxxxxxxxxxx cc: virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx --- include/linux/socket.h | 1 + msg_flags.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/tools/perf/trace/beauty/include/linux/socket.h b/tools/perf/trace/beauty/include/linux/socket.h index 3bef212a24d7..77cb707a566a 100644 --- a/tools/perf/trace/beauty/include/linux/socket.h +++ b/tools/perf/trace/beauty/include/linux/socket.h @@ -326,6 +326,7 @@ struct ucred { */ #define MSG_ZEROCOPY 0x4000000 /* Use user data in kernel path */ +#define MSG_SPLICE_PAGES 0x8000000 /* Splice the pages from the iterator in sendmsg() */ #define MSG_FASTOPEN 0x20000000 /* Send data in TCP SYN */ #define MSG_CMSG_CLOEXEC 0x40000000 /* Set close_on_exec for file descriptor received through diff --git a/tools/perf/trace/beauty/msg_flags.c b/tools/perf/trace/beauty/msg_flags.c index 5cdebd7ece7e..aa9934020232 100644 --- a/tools/perf/trace/beauty/msg_flags.c +++ b/tools/perf/trace/beauty/msg_flags.c @@ -8,6 +8,9 @@ #ifndef MSG_WAITFORONE #define MSG_WAITFORONE 0x10000 #endif +#ifndef MSG_SPLICE_PAGES +#define MSG_SPLICE_PAGES 0x8000000 +#endif #ifndef MSG_FASTOPEN #define MSG_FASTOPEN 0x20000000 #endif