lkml.org 
[lkml]   [2020]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 34/46] net: openvswitch: ensure LSE is pullable before reading it
    Date
    From: Davide Caratti <dcaratti@redhat.com>

    [ Upstream commit 43c13605bad44b8abbc9776d6e63f62ccb7a47d6 ]

    when openvswitch is configured to mangle the LSE, the current value is
    read from the packet dereferencing 4 bytes at mpls_hdr(): ensure that
    the label is contained in the skb "linear" area.

    Found by code inspection.

    Fixes: d27cf5c59a12 ("net: core: add MPLS update core helper and use in OvS")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Link: https://lore.kernel.org/r/aa099f245d93218b84b5c056b67b6058ccf81a66.1606987185.git.dcaratti@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/openvswitch/actions.c | 3 +++
    1 file changed, 3 insertions(+)

    --- a/net/openvswitch/actions.c
    +++ b/net/openvswitch/actions.c
    @@ -200,6 +200,9 @@ static int set_mpls(struct sk_buff *skb,
    __be32 lse;
    int err;

    + if (!pskb_may_pull(skb, skb_network_offset(skb) + MPLS_HLEN))
    + return -ENOMEM;
    +
    stack = mpls_hdr(skb);
    lse = OVS_MASKED(stack->label_stack_entry, *mpls_lse, *mask);
    err = skb_mpls_update_lse(skb, lse);

    \
     
     \ /
      Last update: 2020-12-06 12:47    [W:2.296 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site