Skip to content

Commit 00a7e47

Browse files
committed
tools headers: Sync linux/socket.h with kernel sources
To pick up changes from: d73c167 ("socket: Split out a getsockname helper for io_uring") 4677e78 ("socket: Unify getsockname and getpeername implementation") bf33247 ("net: Add struct sockaddr_unsized for sockaddr of unknown length") This should be used to beautify socket syscall arguments and it addresses these tools/perf build warnings: Warning: Kernel ABI header differences: diff -u tools/perf/trace/beauty/include/linux/socket.h include/linux/socket.h Please see tools/include/uapi/README. Cc: netdev@vger.kernel.org Signed-off-by: Namhyung Kim <namhyung@kernel.org>
1 parent d0783e1 commit 00a7e47

1 file changed

Lines changed: 21 additions & 3 deletions

File tree

  • tools/perf/trace/beauty/include/linux

tools/perf/trace/beauty/include/linux/socket.h

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,29 @@ typedef __kernel_sa_family_t sa_family_t;
3232
* 1003.1g requires sa_family_t and that sa_data is char.
3333
*/
3434

35+
/* Deprecated for in-kernel use. Use struct sockaddr_unsized instead. */
3536
struct sockaddr {
3637
sa_family_t sa_family; /* address family, AF_xxx */
3738
char sa_data[14]; /* 14 bytes of protocol address */
3839
};
3940

41+
/**
42+
* struct sockaddr_unsized - Unspecified size sockaddr for callbacks
43+
* @sa_family: Address family (AF_UNIX, AF_INET, AF_INET6, etc.)
44+
* @sa_data: Flexible array for address data
45+
*
46+
* This structure is designed for callback interfaces where the
47+
* total size is known via the sockaddr_len parameter. Unlike struct
48+
* sockaddr which has a fixed 14-byte sa_data limit or struct
49+
* sockaddr_storage which has a fixed 128-byte sa_data limit, this
50+
* structure can accommodate addresses of any size, but must be used
51+
* carefully.
52+
*/
53+
struct sockaddr_unsized {
54+
__kernel_sa_family_t sa_family; /* address family, AF_xxx */
55+
char sa_data[]; /* flexible address data */
56+
};
57+
4058
struct linger {
4159
int l_onoff; /* Linger active */
4260
int l_linger; /* How long to linger for */
@@ -450,10 +468,10 @@ extern int __sys_connect(int fd, struct sockaddr __user *uservaddr,
450468
int addrlen);
451469
extern int __sys_listen(int fd, int backlog);
452470
extern int __sys_listen_socket(struct socket *sock, int backlog);
471+
extern int do_getsockname(struct socket *sock, int peer,
472+
struct sockaddr __user *usockaddr, int __user *usockaddr_len);
453473
extern int __sys_getsockname(int fd, struct sockaddr __user *usockaddr,
454-
int __user *usockaddr_len);
455-
extern int __sys_getpeername(int fd, struct sockaddr __user *usockaddr,
456-
int __user *usockaddr_len);
474+
int __user *usockaddr_len, int peer);
457475
extern int __sys_socketpair(int family, int type, int protocol,
458476
int __user *usockvec);
459477
extern int __sys_shutdown_sock(struct socket *sock, int how);

0 commit comments

Comments
 (0)