mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
Use msg->msg_namelen as a place holder instead of a temporary variable, notably in inet[6]_recvmsg(). This removes stack canaries and allows tail-calls. $ scripts/bloat-o-meter -t vmlinux.old vmlinux add/remove: 0/0 grow/shrink: 2/19 up/down: 26/-532 (-506) Function old new delta rawv6_recvmsg 744 767 +23 vsock_dgram_recvmsg 55 58 +3 vsock_connectible_recvmsg 50 47 -3 unix_stream_recvmsg 161 158 -3 unix_seqpacket_recvmsg 62 59 -3 unix_dgram_recvmsg 42 39 -3 tcp_recvmsg 546 543 -3 mptcp_recvmsg 1568 1565 -3 ping_recvmsg 806 800 -6 tcp_bpf_recvmsg_parser 983 974 -9 ip_recv_error 588 576 -12 ipv6_recv_rxpmtu 442 428 -14 udp_recvmsg 1243 1224 -19 ipv6_recv_error 1046 1024 -22 udpv6_recvmsg 1487 1461 -26 raw_recvmsg 465 437 -28 udp_bpf_recvmsg 1027 984 -43 sock_common_recvmsg 103 27 -76 inet_recvmsg 257 175 -82 inet6_recvmsg 257 175 -82 tcp_bpf_recvmsg 663 568 -95 Total: Before=25143834, After=25143328, chg -0.00% Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/20260227151120.1346573-1-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
28 lines
873 B
C
28 lines
873 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _UDP4_IMPL_H
|
|
#define _UDP4_IMPL_H
|
|
#include <net/aligned_data.h>
|
|
#include <net/udp.h>
|
|
#include <net/udplite.h>
|
|
#include <net/protocol.h>
|
|
#include <net/inet_common.h>
|
|
|
|
int __udp4_lib_rcv(struct sk_buff *, struct udp_table *, int);
|
|
int __udp4_lib_err(struct sk_buff *, u32, struct udp_table *);
|
|
|
|
int udp_v4_get_port(struct sock *sk, unsigned short snum);
|
|
void udp_v4_rehash(struct sock *sk);
|
|
|
|
int udp_setsockopt(struct sock *sk, int level, int optname, sockptr_t optval,
|
|
unsigned int optlen);
|
|
int udp_getsockopt(struct sock *sk, int level, int optname,
|
|
char __user *optval, int __user *optlen);
|
|
|
|
int udp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int flags);
|
|
void udp_destroy_sock(struct sock *sk);
|
|
|
|
#ifdef CONFIG_PROC_FS
|
|
int udp4_seq_show(struct seq_file *seq, void *v);
|
|
#endif
|
|
#endif /* _UDP4_IMPL_H */
|