Commit f4924f24 authored by Peter Oskolkov's avatar Peter Oskolkov Committed by Daniel Borkmann

bpf: bpf_setsockopt: reset sock dst on SO_MARK changes

In sock_setsockopt() (net/core/sock.h), when SO_MARK option is used
to change sk_mark, sk_dst_reset(sk) is called. The same should be
done in bpf_setsockopt().

Fixes: 8c4b4c7e ("bpf: Add setsockopt helper function to bpf")
Reported-by: default avatarMaciej Żenczykowski <maze@google.com>
Signed-off-by: default avatarPeter Oskolkov <posk@google.com>
Acked-by: default avatarMartin KaFai Lau <kafai@fb.com>
Reviewed-by: default avatarMaciej Żenczykowski <maze@google.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent c61c2768
...@@ -4132,7 +4132,10 @@ BPF_CALL_5(bpf_setsockopt, struct bpf_sock_ops_kern *, bpf_sock, ...@@ -4132,7 +4132,10 @@ BPF_CALL_5(bpf_setsockopt, struct bpf_sock_ops_kern *, bpf_sock,
sk->sk_rcvlowat = val ? : 1; sk->sk_rcvlowat = val ? : 1;
break; break;
case SO_MARK: case SO_MARK:
sk->sk_mark = val; if (sk->sk_mark != val) {
sk->sk_mark = val;
sk_dst_reset(sk);
}
break; break;
default: default:
ret = -EINVAL; ret = -EINVAL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment