Skip to content

Commit 89aa075

Browse files
Alexei Starovoitovdavem330
authored andcommitted
net: sock: allow eBPF programs to be attached to sockets
introduce new setsockopt() command: setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, &prog_fd, sizeof(prog_fd)) where prog_fd was received from syscall bpf(BPF_PROG_LOAD, attr, ...) and attr->prog_type == BPF_PROG_TYPE_SOCKET_FILTER setsockopt() calls bpf_prog_get() which increments refcnt of the program, so it doesn't get unloaded while socket is using the program. The same eBPF program can be attached to multiple sockets. User task exit automatically closes socket which calls sk_filter_uncharge() which decrements refcnt of eBPF program Signed-off-by: Alexei Starovoitov <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent ddd872b commit 89aa075

File tree

18 files changed

+155
-2
lines changed

18 files changed

+155
-2
lines changed

arch/alpha/include/uapi/asm/socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,7 @@
8989

9090
#define SO_INCOMING_CPU 49
9191

92+
#define SO_ATTACH_BPF 50
93+
#define SO_DETACH_BPF SO_DETACH_FILTER
94+
9295
#endif /* _UAPI_ASM_SOCKET_H */

arch/avr32/include/uapi/asm/socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,7 @@
8282

8383
#define SO_INCOMING_CPU 49
8484

85+
#define SO_ATTACH_BPF 50
86+
#define SO_DETACH_BPF SO_DETACH_FILTER
87+
8588
#endif /* _UAPI__ASM_AVR32_SOCKET_H */

arch/cris/include/uapi/asm/socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@
8484

8585
#define SO_INCOMING_CPU 49
8686

87+
#define SO_ATTACH_BPF 50
88+
#define SO_DETACH_BPF SO_DETACH_FILTER
89+
8790
#endif /* _ASM_SOCKET_H */
8891

8992

arch/frv/include/uapi/asm/socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,5 +82,8 @@
8282

8383
#define SO_INCOMING_CPU 49
8484

85+
#define SO_ATTACH_BPF 50
86+
#define SO_DETACH_BPF SO_DETACH_FILTER
87+
8588
#endif /* _ASM_SOCKET_H */
8689

arch/ia64/include/uapi/asm/socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,7 @@
9191

9292
#define SO_INCOMING_CPU 49
9393

94+
#define SO_ATTACH_BPF 50
95+
#define SO_DETACH_BPF SO_DETACH_FILTER
96+
9497
#endif /* _ASM_IA64_SOCKET_H */

arch/m32r/include/uapi/asm/socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,7 @@
8282

8383
#define SO_INCOMING_CPU 49
8484

85+
#define SO_ATTACH_BPF 50
86+
#define SO_DETACH_BPF SO_DETACH_FILTER
87+
8588
#endif /* _ASM_M32R_SOCKET_H */

arch/mips/include/uapi/asm/socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,7 @@
100100

101101
#define SO_INCOMING_CPU 49
102102

103+
#define SO_ATTACH_BPF 50
104+
#define SO_DETACH_BPF SO_DETACH_FILTER
105+
103106
#endif /* _UAPI_ASM_SOCKET_H */

arch/mn10300/include/uapi/asm/socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,7 @@
8282

8383
#define SO_INCOMING_CPU 49
8484

85+
#define SO_ATTACH_BPF 50
86+
#define SO_DETACH_BPF SO_DETACH_FILTER
87+
8588
#endif /* _ASM_SOCKET_H */

arch/parisc/include/uapi/asm/socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,7 @@
8181

8282
#define SO_INCOMING_CPU 0x402A
8383

84+
#define SO_ATTACH_BPF 0x402B
85+
#define SO_DETACH_BPF SO_DETACH_FILTER
86+
8487
#endif /* _UAPI_ASM_SOCKET_H */

arch/powerpc/include/uapi/asm/socket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,7 @@
8989

9090
#define SO_INCOMING_CPU 49
9191

92+
#define SO_ATTACH_BPF 50
93+
#define SO_DETACH_BPF SO_DETACH_FILTER
94+
9295
#endif /* _ASM_POWERPC_SOCKET_H */

0 commit comments

Comments
 (0)