lkml.org 
[lkml]   [2020]   [Oct]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 18/38] drivers/net/wan/lapbether: Make skb->protocol consistent with the header
    Date
    From: Xie He <xie.he.0141@gmail.com>

    [ Upstream commit 83f9a9c8c1edc222846dc1bde6e3479703e8e5a3 ]

    This driver is a virtual driver stacked on top of Ethernet interfaces.

    When this driver transmits data on the Ethernet device, the skb->protocol
    setting is inconsistent with the Ethernet header prepended to the skb.

    This causes a user listening on the Ethernet interface with an AF_PACKET
    socket, to see different sll_protocol values for incoming and outgoing
    frames, because incoming frames would have this value set by parsing the
    Ethernet header.

    This patch changes the skb->protocol value for outgoing Ethernet frames,
    making it consistent with the Ethernet header prepended. This makes a
    user listening on the Ethernet device with an AF_PACKET socket, to see
    the same sll_protocol value for incoming and outgoing frames.

    Cc: Martin Schiller <ms@dev.tdt.de>
    Signed-off-by: Xie He <xie.he.0141@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wan/lapbether.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/drivers/net/wan/lapbether.c b/drivers/net/wan/lapbether.c
    index 15177a54b17d7..e5fc1b95cea6a 100644
    --- a/drivers/net/wan/lapbether.c
    +++ b/drivers/net/wan/lapbether.c
    @@ -201,8 +201,6 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb)
    struct net_device *dev;
    int size = skb->len;

    - skb->protocol = htons(ETH_P_X25);
    -
    ptr = skb_push(skb, 2);

    *ptr++ = size % 256;
    @@ -213,6 +211,8 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb)

    skb->dev = dev = lapbeth->ethdev;

    + skb->protocol = htons(ETH_P_DEC);
    +
    skb_reset_network_header(skb);

    dev_hard_header(skb, dev, ETH_P_DEC, bcast_addr, NULL, 0);
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-05 17:28    [W:3.042 / U:0.232 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site