lkml.org 
[lkml]   [2019]   [Dec]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 025/187] netfilter: nf_queue: enqueue skbs with NULL dst
    Date
    From: Marco Oliverio <marco.oliverio@tanaza.com>

    [ Upstream commit 0b9173f4688dfa7c5d723426be1d979c24ce3d51 ]

    Bridge packets that are forwarded have skb->dst == NULL and get
    dropped by the check introduced by
    b60a77386b1d4868f72f6353d35dabe5fbe981f2 (net: make skb_dst_force
    return true when dst is refcounted).

    To fix this we check skb_dst() before skb_dst_force(), so we don't
    drop skb packet with dst == NULL. This holds also for skb at the
    PRE_ROUTING hook so we remove the second check.

    Fixes: b60a77386b1d ("net: make skb_dst_force return true when dst is refcounted")
    Signed-off-by: Marco Oliverio <marco.oliverio@tanaza.com>
    Signed-off-by: Rocco Folino <rocco.folino@tanaza.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/netfilter/nf_queue.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c
    index a2b58de82600..f8f52ff99cfb 100644
    --- a/net/netfilter/nf_queue.c
    +++ b/net/netfilter/nf_queue.c
    @@ -189,7 +189,7 @@ static int __nf_queue(struct sk_buff *skb, const struct nf_hook_state *state,
    goto err;
    }

    - if (!skb_dst_force(skb) && state->hook != NF_INET_PRE_ROUTING) {
    + if (skb_dst(skb) && !skb_dst_force(skb)) {
    status = -ENETDOWN;
    goto err;
    }
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-12-27 18:42    [W:4.554 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site