selftests/bpf: Fix wrong size passed to bpf_setsockopt()
sizeof(new_cc) is not real memory size that new_cc points to; introduce a new_cc_len to store the size and then pass it to bpf_setsockopt(). Fixes: 31123c0360e0 ("selftests/bpf: bpf_setsockopt tests") Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/bpf/20220824013907.380448-1-yangyingliang@huawei.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
b03914f7ff
commit
7e165d1939
@ -305,15 +305,19 @@ static int bpf_test_tcp_sockopt(__u32 i, struct loop_ctx *lc)
|
||||
if (t->opt == TCP_CONGESTION) {
|
||||
char old_cc[16], tmp_cc[16];
|
||||
const char *new_cc;
|
||||
int new_cc_len;
|
||||
|
||||
if (bpf_getsockopt(ctx, IPPROTO_TCP, TCP_CONGESTION, old_cc, sizeof(old_cc)))
|
||||
return 1;
|
||||
if (!bpf_strncmp(old_cc, sizeof(old_cc), cubic_cc))
|
||||
if (!bpf_strncmp(old_cc, sizeof(old_cc), cubic_cc)) {
|
||||
new_cc = reno_cc;
|
||||
else
|
||||
new_cc_len = sizeof(reno_cc);
|
||||
} else {
|
||||
new_cc = cubic_cc;
|
||||
new_cc_len = sizeof(cubic_cc);
|
||||
}
|
||||
if (bpf_setsockopt(ctx, IPPROTO_TCP, TCP_CONGESTION, (void *)new_cc,
|
||||
sizeof(new_cc)))
|
||||
new_cc_len))
|
||||
return 1;
|
||||
if (bpf_getsockopt(ctx, IPPROTO_TCP, TCP_CONGESTION, tmp_cc, sizeof(tmp_cc)))
|
||||
return 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user