lkml.org 
[lkml]   [2022]   [Jul]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 055/201] ip: Fix data-races around sysctl_ip_fwd_use_pmtu.
    Date
    From: Kuniyuki Iwashima <kuniyu@amazon.com>

    [ Upstream commit 60c158dc7b1f0558f6cadd5b50d0386da0000d50 ]

    While reading sysctl_ip_fwd_use_pmtu, it can be changed concurrently.
    Thus, we need to add READ_ONCE() to its readers.

    Fixes: f87c10a8aa1e ("ipv4: introduce ip_dst_mtu_maybe_forward and protect forwarding path against pmtu spoofing")
    Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    include/net/ip.h | 2 +-
    net/ipv4/route.c | 2 +-
    2 files changed, 2 insertions(+), 2 deletions(-)

    diff --git a/include/net/ip.h b/include/net/ip.h
    index a77a9e1c6c04..c69dd114f367 100644
    --- a/include/net/ip.h
    +++ b/include/net/ip.h
    @@ -441,7 +441,7 @@ static inline unsigned int ip_dst_mtu_maybe_forward(const struct dst_entry *dst,
    struct net *net = dev_net(dst->dev);
    unsigned int mtu;

    - if (net->ipv4.sysctl_ip_fwd_use_pmtu ||
    + if (READ_ONCE(net->ipv4.sysctl_ip_fwd_use_pmtu) ||
    ip_mtu_locked(dst) ||
    !forwarding) {
    mtu = rt->rt_pmtu;
    diff --git a/net/ipv4/route.c b/net/ipv4/route.c
    index 1db2fda22830..7f08a30256c5 100644
    --- a/net/ipv4/route.c
    +++ b/net/ipv4/route.c
    @@ -1404,7 +1404,7 @@ u32 ip_mtu_from_fib_result(struct fib_result *res, __be32 daddr)
    struct fib_info *fi = res->fi;
    u32 mtu = 0;

    - if (dev_net(dev)->ipv4.sysctl_ip_fwd_use_pmtu ||
    + if (READ_ONCE(dev_net(dev)->ipv4.sysctl_ip_fwd_use_pmtu) ||
    fi->fib_metrics->metrics[RTAX_LOCK - 1] & (1 << RTAX_MTU))
    mtu = fi->fib_mtu;

    --
    2.35.1


    \
     
     \ /
      Last update: 2022-07-27 19:07    [W:4.054 / U:0.332 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site