[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <2B90C3B0-0A52-4D0A-ADA7-63AAC3C4414D@fb.com>
Date: Fri, 19 Jul 2019 02:55:44 +0000
From: Lawrence Brakmo <brakmo@...com>
To: Eric Dumazet <edumazet@...gle.com>,
"David S . Miller" <davem@...emloft.net>
CC: netdev <netdev@...r.kernel.org>,
Eric Dumazet <eric.dumazet@...il.com>,
Neal Cardwell <ncardwell@...gle.com>
Subject: Re: [PATCH net] tcp: fix tcp_set_congestion_control() use from bpf
hook
On 7/18/19, 7:28 PM, "Eric Dumazet" <edumazet@...gle.com> wrote:
Neal reported incorrect use of ns_capable() from bpf hook.
bpf_setsockopt(...TCP_CONGESTION...)
-> tcp_set_congestion_control()
-> ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)
-> ns_capable_common()
-> current_cred()
-> rcu_dereference_protected(current->cred, 1)
Accessing 'current' in bpf context makes no sense, since packets
are processed from softirq context.
As Neal stated : The capability check in tcp_set_congestion_control()
was written assuming a system call context, and then was reused from
a BPF call site.
The fix is to add a new parameter to tcp_set_congestion_control(),
so that the ns_capable() call is only performed under the right
context.
Fixes: 91b5b21c7c16 ("bpf: Add support for changing congestion control")
Signed-off-by: Eric Dumazet <edumazet@...gle.com>
Cc: Lawrence Brakmo <brakmo@...com>
Reported-by: Neal Cardwell <ncardwell@...gle.com>
---
Acked-by: Lawrence Brakmo <brakmo@...com>
Thanks, Eric!
Powered by blists - more mailing lists