diff --git a/net/core/filter.c b/net/core/filter.c index d9076e609fca6e56bfad59ce239a31a9e22cdd53..d9ea51b47f3585409080dd40e263d4dc23b18ab1 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -4132,7 +4132,10 @@ BPF_CALL_5(bpf_setsockopt, struct bpf_sock_ops_kern *, bpf_sock, sk->sk_rcvlowat = val ? : 1; break; case SO_MARK: - sk->sk_mark = val; + if (sk->sk_mark != val) { + sk->sk_mark = val; + sk_dst_reset(sk); + } break; default: ret = -EINVAL;