Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8b92162f authored by Peter Oskolkov's avatar Peter Oskolkov Committed by Greg Kroah-Hartman
Browse files

bpf: bpf_setsockopt: reset sock dst on SO_MARK changes



[ Upstream commit f4924f24da8c7ef64195096817f3cde324091d97 ]

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>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 0761f58c
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -3930,7 +3930,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:
			if (sk->sk_mark != val) {
				sk->sk_mark = val;
				sk->sk_mark = val;
				sk_dst_reset(sk);
			}
			break;
			break;
		default:
		default:
			ret = -EINVAL;
			ret = -EINVAL;