lkml.org 
[lkml]   [2022]   [Oct]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.19 08/73] openvswitch: Fix double reporting of drops in dropwatch
    Date
    From: Mike Pattrick <mkp@redhat.com>

    [ Upstream commit 1100248a5c5ccd57059eb8d02ec077e839a23826 ]

    Frames sent to userspace can be reported as dropped in
    ovs_dp_process_packet, however, if they are dropped in the netlink code
    then netlink_attachskb will report the same frame as dropped.

    This patch checks for error codes which indicate that the frame has
    already been freed.

    Signed-off-by: Mike Pattrick <mkp@redhat.com>
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=2109946
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/openvswitch/datapath.c | 13 ++++++++++---
    1 file changed, 10 insertions(+), 3 deletions(-)

    diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
    index 6c9d153afbee..b68ba3c72519 100644
    --- a/net/openvswitch/datapath.c
    +++ b/net/openvswitch/datapath.c
    @@ -252,10 +252,17 @@ void ovs_dp_process_packet(struct sk_buff *skb, struct sw_flow_key *key)

    upcall.mru = OVS_CB(skb)->mru;
    error = ovs_dp_upcall(dp, skb, key, &upcall, 0);
    - if (unlikely(error))
    - kfree_skb(skb);
    - else
    + switch (error) {
    + case 0:
    + case -EAGAIN:
    + case -ERESTARTSYS:
    + case -EINTR:
    consume_skb(skb);
    + break;
    + default:
    + kfree_skb(skb);
    + break;
    + }
    stats_counter = &stats->n_missed;
    goto out;
    }
    --
    2.35.1
    \
     
     \ /
      Last update: 2022-10-10 00:33    [W:4.057 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site