]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: move sk_uid and sk_protocol to sock_read_tx
authorEric Dumazet <edumazet@google.com>
Fri, 19 Sep 2025 20:48:49 +0000 (20:48 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 23 Sep 2025 00:55:24 +0000 (17:55 -0700)
sk_uid and sk_protocol are read from inet6_csk_route_socket()
for each TCP transmit.

Also read from udpv6_sendmsg(), udp_sendmsg() and others.

Move them to sock_read_tx for better cache locality.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20250919204856.2977245-2-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/sock.h
net/core/sock.c

index ee95081b0c0bb24b6603a20f099606d350a26092..66c2f396b57de5a0048b4ae1e6181c4473be15c5 100644 (file)
@@ -492,6 +492,9 @@ struct sock {
        long                    sk_sndtimeo;
        u32                     sk_priority;
        u32                     sk_mark;
+       kuid_t                  sk_uid;
+       u16                     sk_protocol;
+       u16                     sk_type;
        struct dst_entry __rcu  *sk_dst_cache;
        netdev_features_t       sk_route_caps;
 #ifdef CONFIG_SOCK_VALIDATE_XMIT
@@ -517,15 +520,12 @@ struct sock {
                                sk_no_check_tx : 1,
                                sk_no_check_rx : 1;
        u8                      sk_shutdown;
-       u16                     sk_type;
-       u16                     sk_protocol;
        unsigned long           sk_lingertime;
        struct proto            *sk_prot_creator;
        rwlock_t                sk_callback_lock;
        int                     sk_err_soft;
        u32                     sk_ack_backlog;
        u32                     sk_max_ack_backlog;
-       kuid_t                  sk_uid;
        unsigned long           sk_ino;
        spinlock_t              sk_peer_lock;
        int                     sk_bind_phc;
index 21742da19e45bbe53e84b8a87d5a23bc2d2275f8..ad79efde447675c8a8a3aafe204e2bbb1a5efe7c 100644 (file)
@@ -4471,6 +4471,8 @@ static int __init sock_struct_check(void)
        CACHELINE_ASSERT_GROUP_MEMBER(struct sock, sock_read_tx, sk_sndtimeo);
        CACHELINE_ASSERT_GROUP_MEMBER(struct sock, sock_read_tx, sk_priority);
        CACHELINE_ASSERT_GROUP_MEMBER(struct sock, sock_read_tx, sk_mark);
+       CACHELINE_ASSERT_GROUP_MEMBER(struct sock, sock_read_tx, sk_uid);
+       CACHELINE_ASSERT_GROUP_MEMBER(struct sock, sock_read_tx, sk_protocol);
        CACHELINE_ASSERT_GROUP_MEMBER(struct sock, sock_read_tx, sk_dst_cache);
        CACHELINE_ASSERT_GROUP_MEMBER(struct sock, sock_read_tx, sk_route_caps);
        CACHELINE_ASSERT_GROUP_MEMBER(struct sock, sock_read_tx, sk_gso_type);