lkml.org 
[lkml]   [2021]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 031/161] net: sock: fix in-kernel mark setting
    Date
    From: Alexander Aring <aahringo@redhat.com>

    [ Upstream commit dd9082f4a9f94280fbbece641bf8fc0a25f71f7a ]

    This patch fixes the in-kernel mark setting by doing an additional
    sk_dst_reset() which was introduced by commit 50254256f382 ("sock: Reset
    dst when changing sk_mark via setsockopt"). The code is now shared to
    avoid any further suprises when changing the socket mark value.

    Fixes: 84d1c617402e ("net: sock: add sock_set_mark")
    Reported-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Alexander Aring <aahringo@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/core/sock.c | 16 ++++++++++++----
    1 file changed, 12 insertions(+), 4 deletions(-)

    diff --git a/net/core/sock.c b/net/core/sock.c
    index 9c7b143e7a96..a266760cd65e 100644
    --- a/net/core/sock.c
    +++ b/net/core/sock.c
    @@ -815,10 +815,18 @@ void sock_set_rcvbuf(struct sock *sk, int val)
    }
    EXPORT_SYMBOL(sock_set_rcvbuf);

    +static void __sock_set_mark(struct sock *sk, u32 val)
    +{
    + if (val != sk->sk_mark) {
    + sk->sk_mark = val;
    + sk_dst_reset(sk);
    + }
    +}
    +
    void sock_set_mark(struct sock *sk, u32 val)
    {
    lock_sock(sk);
    - sk->sk_mark = val;
    + __sock_set_mark(sk, val);
    release_sock(sk);
    }
    EXPORT_SYMBOL(sock_set_mark);
    @@ -1126,10 +1134,10 @@ set_sndbuf:
    case SO_MARK:
    if (!ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)) {
    ret = -EPERM;
    - } else if (val != sk->sk_mark) {
    - sk->sk_mark = val;
    - sk_dst_reset(sk);
    + break;
    }
    +
    + __sock_set_mark(sk, val);
    break;

    case SO_RXQ_OVFL:
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-06-08 21:15    [W:4.047 / U:0.404 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site