Commit b3af609
bpf: Fix bpf_sk_select_reuseport() memory leak
As pointed out in the original comment, lookup in sockmap can return a TCP
ESTABLISHED socket. Such TCP socket may have had SO_ATTACH_REUSEPORT_EBPF
set before it was ESTABLISHED. In other words, a non-NULL sk_reuseport_cb
does not imply a non-refcounted socket.
Drop sk's reference in both error paths.
unreferenced object 0xffff888101911800 (size 2048):
comm "test_progs", pid 44109, jiffies 4297131437
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
80 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace (crc 9336483b):
__kmalloc_noprof+0x3bf/0x560
__reuseport_alloc+0x1d/0x40
reuseport_alloc+0xca/0x150
reuseport_attach_prog+0x87/0x140
sk_reuseport_attach_bpf+0xc8/0x100
sk_setsockopt+0x1181/0x1990
do_sock_setsockopt+0x12b/0x160
__sys_setsockopt+0x7b/0xc0
__x64_sys_setsockopt+0x1b/0x30
do_syscall_64+0x93/0x180
entry_SYSCALL_64_after_hwframe+0x76/0x7e
Fixes: 64d8529 ("bpf: Allow bpf_map_lookup_elem for SOCKMAP and SOCKHASH")
Signed-off-by: Michal Luczaj <[email protected]>
Reviewed-by: Martin KaFai Lau <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>1 parent 8c7a6ef commit b3af609
1 file changed
+18
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11251 | 11251 | | |
11252 | 11252 | | |
11253 | 11253 | | |
| 11254 | + | |
11254 | 11255 | | |
11255 | 11256 | | |
11256 | 11257 | | |
11257 | 11258 | | |
11258 | 11259 | | |
11259 | 11260 | | |
11260 | 11261 | | |
11261 | | - | |
11262 | | - | |
11263 | | - | |
11264 | | - | |
11265 | 11262 | | |
11266 | 11263 | | |
11267 | 11264 | | |
11268 | 11265 | | |
11269 | 11266 | | |
11270 | 11267 | | |
11271 | 11268 | | |
11272 | | - | |
| 11269 | + | |
| 11270 | + | |
11273 | 11271 | | |
11274 | 11272 | | |
11275 | 11273 | | |
11276 | 11274 | | |
11277 | 11275 | | |
11278 | | - | |
11279 | | - | |
11280 | | - | |
11281 | | - | |
11282 | | - | |
11283 | | - | |
11284 | | - | |
| 11276 | + | |
| 11277 | + | |
| 11278 | + | |
| 11279 | + | |
| 11280 | + | |
| 11281 | + | |
| 11282 | + | |
| 11283 | + | |
| 11284 | + | |
11285 | 11285 | | |
11286 | 11286 | | |
11287 | 11287 | | |
11288 | 11288 | | |
11289 | 11289 | | |
| 11290 | + | |
| 11291 | + | |
| 11292 | + | |
| 11293 | + | |
| 11294 | + | |
| 11295 | + | |
11290 | 11296 | | |
11291 | 11297 | | |
11292 | 11298 | | |
| |||
0 commit comments