lkml.org 
[lkml]   [2020]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 68/93] batman-adv: update data pointers after skb_cow()
    Date
    From: Matthias Schiffer <mschiffer@universe-factory.net>

    commit bc44b78157f621ff2a2618fe287a827bcb094ac4 upstream.

    batadv_check_unicast_ttvn() calls skb_cow(), so pointers into the SKB data
    must be (re)set after calling it. The ethhdr variable is dropped
    altogether.

    Fixes: 78fc6bbe0aca ("batman-adv: add UNICAST_4ADDR packet type")
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/batman-adv/routing.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    --- a/net/batman-adv/routing.c
    +++ b/net/batman-adv/routing.c
    @@ -904,7 +904,6 @@ int batadv_recv_unicast_packet(struct sk
    bool is4addr;

    unicast_packet = (struct batadv_unicast_packet *)skb->data;
    - unicast_4addr_packet = (struct batadv_unicast_4addr_packet *)skb->data;

    is4addr = unicast_packet->packet_type == BATADV_UNICAST_4ADDR;
    /* the caller function should have already pulled 2 bytes */
    @@ -925,9 +924,13 @@ int batadv_recv_unicast_packet(struct sk
    if (!batadv_check_unicast_ttvn(bat_priv, skb, hdr_size))
    return NET_RX_DROP;

    + unicast_packet = (struct batadv_unicast_packet *)skb->data;
    +
    /* packet for me */
    if (batadv_is_my_mac(bat_priv, unicast_packet->dest)) {
    if (is4addr) {
    + unicast_4addr_packet =
    + (struct batadv_unicast_4addr_packet *)skb->data;
    subtype = unicast_4addr_packet->subtype;
    batadv_dat_inc_counter(bat_priv, subtype);


    \
     
     \ /
      Last update: 2020-03-19 14:38    [W:4.090 / U:0.712 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site