CVE-2022-49204

bpf, sockmap: Fix more uncharged while msg has more_data

published February 26, 2025

CVSS
—
EPSS
0%
Percentile
18.1
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

bpf, sockmap: Fix more uncharged while msg has more_data

In tcp_bpf_send_verdict(), if msg has more data after

tcp_bpf_sendmsg_redir():

tcp_bpf_send_verdict()

tosend = msg->sg.size //msg->sg.size = 22220

case __SK_REDIRECT:

sk_msg_return() //uncharged msg->sg.size(22220) sk->sk_forward_alloc

tcp_bpf_sendmsg_redir() //after tcp_bpf_sendmsg_redir, msg->sg.size=11000

goto more_data;

tosend = msg->sg.size //msg->sg.size = 11000

case __SK_REDIRECT:

sk_msg_return() //uncharged msg->sg.size(11000) to sk->sk_forward_alloc

The msg->sg.size(11000) has been uncharged twice, to fix we can charge the

remaining msg->sg.size before goto more data.

This issue can cause the following info:

WARNING: CPU: 0 PID: 9860 at net/core/stream.c:208 sk_stream_kill_queues+0xd4/0x1a0

Call Trace:

<TASK>

inet_csk_destroy_sock+0x55/0x110

__tcp_close+0x279/0x470

tcp_close+0x1f/0x60

inet_release+0x3f/0x80

__sock_release+0x3d/0xb0

sock_close+0x11/0x20

__fput+0x92/0x250

task_work_run+0x6a/0xa0

do_exit+0x33b/0xb60

do_group_exit+0x2f/0xa0

get_signal+0xb6/0x950

arch_do_signal_or_restart+0xac/0x2a0

? vfs_write+0x237/0x290

exit_to_user_mode_prepare+0xa9/0x200

syscall_exit_to_user_mode+0x12/0x30

do_syscall_64+0x46/0x80

entry_SYSCALL_64_after_hwframe+0x44/0xae

</TASK>

WARNING: CPU: 0 PID: 2136 at net/ipv4/af_inet.c:155 inet_sock_destruct+0x13c/0x260

Call Trace:

<TASK>

__sk_destruct+0x24/0x1f0

sk_psock_destroy+0x19b/0x1c0

process_one_work+0x1b3/0x3c0

worker_thread+0x30/0x350

? process_one_work+0x3c0/0x3c0

kthread+0xe6/0x110

? kthread_complete_and_exit+0x20/0x20

ret_from_fork+0x22/0x30

</TASK>

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00269 · 18.1th percentile
Published
2025-02-26T01:55Z
EPSS history
Timeline
  • 26 FEB 01:55Z
    bpf, sockmap: Fix more uncharged while msg has more_data
    cvelistv5