From 330a06a714caf9d8728839c513fc9dd3f27eb596 Mon Sep 17 00:00:00 2001 From: Yuchung Cheng Date: Thu, 14 Feb 2019 13:53:54 +0800 Subject: [PATCH] bpf: fix SO_MAX_PACING_RATE to support TCP internal pacing mainline inclusion from mainline-5.0 commit e224c390a625 category: bugfix bugzilla: 7157 CVE: NA ------------------------------------------------- If sch_fq packet scheduler is not used, TCP can fallback to internal pacing, but this requires sk_pacing_status to be properly set. Fixes: 8c4b4c7e9ff0 ("bpf: Add setsockopt helper function to bpf") Signed-off-by: Yuchung Cheng Signed-off-by: Eric Dumazet Cc: Lawrence Brakmo Acked-by: Martin KaFai Lau Signed-off-by: Daniel Borkmann Signed-off-by: Mao Wenan Reviewed-by: Wei Yongjun Signed-off-by: Yang Yingliang --- net/core/filter.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/core/filter.c b/net/core/filter.c index 3d0579a0b746..511ce2c8f6b6 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -3917,6 +3917,10 @@ BPF_CALL_5(bpf_setsockopt, struct bpf_sock_ops_kern *, bpf_sock, sk->sk_sndbuf = max_t(int, val * 2, SOCK_MIN_SNDBUF); break; case SO_MAX_PACING_RATE: + if (val != ~0U) + cmpxchg(&sk->sk_pacing_status, + SK_PACING_NONE, + SK_PACING_NEEDED); sk->sk_max_pacing_rate = val; sk->sk_pacing_rate = min(sk->sk_pacing_rate, sk->sk_max_pacing_rate); -- GitLab