Skip to content

Commit 84960bf

Browse files
q2venkuba-moo
authored andcommitted
af_unix: Move internal definitions to net/unix/.
net/af_unix.h is included by core and some LSMs, but most definitions need not be. Let's move struct unix_{vertex,edge} to net/unix/garbage.c and other definitions to net/unix/af_unix.h. Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com> Reviewed-by: Joe Damato <jdamato@fastly.com> Link: https://patch.msgid.link/20250318034934.86708-3-kuniyu@amazon.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent f9af583 commit 84960bf

File tree

7 files changed

+102
-75
lines changed

7 files changed

+102
-75
lines changed

include/net/af_unix.h

Lines changed: 1 addition & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -17,61 +17,17 @@ static inline struct unix_sock *unix_get_socket(struct file *filp)
1717
}
1818
#endif
1919

20-
extern unsigned int unix_tot_inflight;
21-
void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver);
22-
void unix_del_edges(struct scm_fp_list *fpl);
23-
void unix_update_edges(struct unix_sock *receiver);
24-
int unix_prepare_fpl(struct scm_fp_list *fpl);
25-
void unix_destroy_fpl(struct scm_fp_list *fpl);
26-
void unix_gc(void);
27-
void wait_for_unix_gc(struct scm_fp_list *fpl);
28-
29-
struct unix_vertex {
30-
struct list_head edges;
31-
struct list_head entry;
32-
struct list_head scc_entry;
33-
unsigned long out_degree;
34-
unsigned long index;
35-
unsigned long scc_index;
36-
};
37-
38-
struct unix_edge {
39-
struct unix_sock *predecessor;
40-
struct unix_sock *successor;
41-
struct list_head vertex_entry;
42-
struct list_head stack_entry;
43-
};
44-
45-
struct sock *unix_peer_get(struct sock *sk);
46-
47-
#define UNIX_HASH_MOD (256 - 1)
48-
#define UNIX_HASH_SIZE (256 * 2)
49-
#define UNIX_HASH_BITS 8
50-
5120
struct unix_address {
5221
refcount_t refcnt;
5322
int len;
5423
struct sockaddr_un name[];
5524
};
5625

57-
struct unix_skb_parms {
58-
struct pid *pid; /* Skb credentials */
59-
kuid_t uid;
60-
kgid_t gid;
61-
struct scm_fp_list *fp; /* Passed files */
62-
#ifdef CONFIG_SECURITY_NETWORK
63-
u32 secid; /* Security ID */
64-
#endif
65-
u32 consumed;
66-
} __randomize_layout;
67-
6826
struct scm_stat {
6927
atomic_t nr_fds;
7028
unsigned long nr_unix_fds;
7129
};
7230

73-
#define UNIXCB(skb) (*(struct unix_skb_parms *)&((skb)->cb))
74-
7531
/* The AF_UNIX socket */
7632
struct unix_sock {
7733
/* WARNING: sk has to be the first member */
@@ -84,6 +40,7 @@ struct unix_sock {
8440
struct unix_vertex *vertex;
8541
spinlock_t lock;
8642
struct socket_wq peer_wq;
43+
#define peer_wait peer_wq.wait
8744
wait_queue_entry_t peer_wake;
8845
struct scm_stat scm_stat;
8946
#if IS_ENABLED(CONFIG_AF_UNIX_OOB)
@@ -94,35 +51,4 @@ struct unix_sock {
9451
#define unix_sk(ptr) container_of_const(ptr, struct unix_sock, sk)
9552
#define unix_peer(sk) (unix_sk(sk)->peer)
9653

97-
#define unix_state_lock(s) spin_lock(&unix_sk(s)->lock)
98-
#define unix_state_unlock(s) spin_unlock(&unix_sk(s)->lock)
99-
100-
#define peer_wait peer_wq.wait
101-
102-
long unix_inq_len(struct sock *sk);
103-
long unix_outq_len(struct sock *sk);
104-
105-
int __unix_dgram_recvmsg(struct sock *sk, struct msghdr *msg, size_t size,
106-
int flags);
107-
int __unix_stream_recvmsg(struct sock *sk, struct msghdr *msg, size_t size,
108-
int flags);
109-
#ifdef CONFIG_SYSCTL
110-
int unix_sysctl_register(struct net *net);
111-
void unix_sysctl_unregister(struct net *net);
112-
#else
113-
static inline int unix_sysctl_register(struct net *net) { return 0; }
114-
static inline void unix_sysctl_unregister(struct net *net) {}
115-
#endif
116-
117-
#ifdef CONFIG_BPF_SYSCALL
118-
extern struct proto unix_dgram_proto;
119-
extern struct proto unix_stream_proto;
120-
121-
int unix_dgram_bpf_update_proto(struct sock *sk, struct sk_psock *psock, bool restore);
122-
int unix_stream_bpf_update_proto(struct sock *sk, struct sk_psock *psock, bool restore);
123-
void __init unix_bpf_build_proto(void);
124-
#else
125-
static inline void __init unix_bpf_build_proto(void)
126-
{}
127-
#endif
12854
#endif

net/unix/af_unix.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@
118118
#include <net/sock.h>
119119
#include <net/tcp_states.h>
120120

121+
#include "af_unix.h"
122+
121123
static atomic_long_t unix_nr_socks;
122124
static struct hlist_head bsd_socket_buckets[UNIX_HASH_SIZE / 2];
123125
static spinlock_t bsd_socket_locks[UNIX_HASH_SIZE / 2];

net/unix/af_unix.h

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/* SPDX-License-Identifier: GPL-2.0 */
2+
#ifndef __AF_UNIX_H
3+
#define __AF_UNIX_H
4+
5+
#include <linux/uidgid.h>
6+
7+
#define UNIX_HASH_MOD (256 - 1)
8+
#define UNIX_HASH_SIZE (256 * 2)
9+
#define UNIX_HASH_BITS 8
10+
11+
#define unix_state_lock(s) spin_lock(&unix_sk(s)->lock)
12+
#define unix_state_unlock(s) spin_unlock(&unix_sk(s)->lock)
13+
14+
struct sock *unix_peer_get(struct sock *sk);
15+
16+
struct unix_skb_parms {
17+
struct pid *pid; /* skb credentials */
18+
kuid_t uid;
19+
kgid_t gid;
20+
struct scm_fp_list *fp; /* Passed files */
21+
#ifdef CONFIG_SECURITY_NETWORK
22+
u32 secid; /* Security ID */
23+
#endif
24+
u32 consumed;
25+
} __randomize_layout;
26+
27+
#define UNIXCB(skb) (*(struct unix_skb_parms *)&((skb)->cb))
28+
29+
/* GC for SCM_RIGHTS */
30+
extern unsigned int unix_tot_inflight;
31+
void unix_add_edges(struct scm_fp_list *fpl, struct unix_sock *receiver);
32+
void unix_del_edges(struct scm_fp_list *fpl);
33+
void unix_update_edges(struct unix_sock *receiver);
34+
int unix_prepare_fpl(struct scm_fp_list *fpl);
35+
void unix_destroy_fpl(struct scm_fp_list *fpl);
36+
void unix_gc(void);
37+
void wait_for_unix_gc(struct scm_fp_list *fpl);
38+
39+
/* SOCK_DIAG */
40+
long unix_inq_len(struct sock *sk);
41+
long unix_outq_len(struct sock *sk);
42+
43+
/* sysctl */
44+
#ifdef CONFIG_SYSCTL
45+
int unix_sysctl_register(struct net *net);
46+
void unix_sysctl_unregister(struct net *net);
47+
#else
48+
static inline int unix_sysctl_register(struct net *net)
49+
{
50+
return 0;
51+
}
52+
53+
static inline void unix_sysctl_unregister(struct net *net)
54+
{
55+
}
56+
#endif
57+
58+
/* BPF SOCKMAP */
59+
int __unix_dgram_recvmsg(struct sock *sk, struct msghdr *msg, size_t size, int flags);
60+
int __unix_stream_recvmsg(struct sock *sk, struct msghdr *msg, size_t size, int flags);
61+
62+
#ifdef CONFIG_BPF_SYSCALL
63+
extern struct proto unix_dgram_proto;
64+
extern struct proto unix_stream_proto;
65+
66+
int unix_dgram_bpf_update_proto(struct sock *sk, struct sk_psock *psock, bool restore);
67+
int unix_stream_bpf_update_proto(struct sock *sk, struct sk_psock *psock, bool restore);
68+
void __init unix_bpf_build_proto(void);
69+
#else
70+
static inline void __init unix_bpf_build_proto(void)
71+
{
72+
}
73+
#endif
74+
75+
#endif

net/unix/diag.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
#include <net/sock.h>
1313
#include <net/tcp_states.h>
1414

15+
#include "af_unix.h"
16+
1517
static int sk_diag_dump_name(struct sock *sk, struct sk_buff *nlskb)
1618
{
1719
/* might or might not have a hash table lock */

net/unix/garbage.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,24 @@
8080
#include <net/sock.h>
8181
#include <net/tcp_states.h>
8282

83+
#include "af_unix.h"
84+
85+
struct unix_vertex {
86+
struct list_head edges;
87+
struct list_head entry;
88+
struct list_head scc_entry;
89+
unsigned long out_degree;
90+
unsigned long index;
91+
unsigned long scc_index;
92+
};
93+
94+
struct unix_edge {
95+
struct unix_sock *predecessor;
96+
struct unix_sock *successor;
97+
struct list_head vertex_entry;
98+
struct list_head stack_entry;
99+
};
100+
83101
struct unix_sock *unix_get_socket(struct file *filp)
84102
{
85103
struct inode *inode = file_inode(filp);

net/unix/sysctl_net_unix.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#include <linux/sysctl.h>
1111
#include <net/af_unix.h>
1212

13+
#include "af_unix.h"
14+
1315
static struct ctl_table unix_table[] = {
1416
{
1517
.procname = "max_dgram_qlen",

net/unix/unix_bpf.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#include <net/af_unix.h>
77
#include <net/sock.h>
88

9+
#include "af_unix.h"
10+
911
#define unix_sk_has_data(__sk, __psock) \
1012
({ !skb_queue_empty(&__sk->sk_receive_queue) || \
1113
!skb_queue_empty(&__psock->ingress_skb) || \

0 commit comments

Comments
 (0)