Commit 0ab52a8
bpf: Fix bpf_sk_select_reuseport() memory leak
[ Upstream commit b3af609 ]
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]>
Signed-off-by: Sasha Levin <[email protected]>1 parent 9bb2617 commit 0ab52a8
1 file changed
+18
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10509 | 10509 | | |
10510 | 10510 | | |
10511 | 10511 | | |
| 10512 | + | |
10512 | 10513 | | |
10513 | 10514 | | |
10514 | 10515 | | |
10515 | 10516 | | |
10516 | 10517 | | |
10517 | 10518 | | |
10518 | 10519 | | |
10519 | | - | |
10520 | | - | |
10521 | | - | |
10522 | | - | |
10523 | 10520 | | |
10524 | 10521 | | |
10525 | 10522 | | |
10526 | 10523 | | |
10527 | 10524 | | |
10528 | 10525 | | |
10529 | 10526 | | |
10530 | | - | |
| 10527 | + | |
| 10528 | + | |
10531 | 10529 | | |
10532 | 10530 | | |
10533 | 10531 | | |
10534 | 10532 | | |
10535 | 10533 | | |
10536 | | - | |
10537 | | - | |
10538 | | - | |
10539 | | - | |
10540 | | - | |
10541 | | - | |
10542 | | - | |
| 10534 | + | |
| 10535 | + | |
| 10536 | + | |
| 10537 | + | |
| 10538 | + | |
| 10539 | + | |
| 10540 | + | |
| 10541 | + | |
| 10542 | + | |
10543 | 10543 | | |
10544 | 10544 | | |
10545 | 10545 | | |
10546 | 10546 | | |
10547 | 10547 | | |
| 10548 | + | |
| 10549 | + | |
| 10550 | + | |
| 10551 | + | |
| 10552 | + | |
| 10553 | + | |
10548 | 10554 | | |
10549 | 10555 | | |
10550 | 10556 | | |
| |||
0 commit comments