[commits] [batman-adv] master: batman-adv: Force mac header to start of data on xmit (74c4b0c5)

postmaster at open-mesh.org postmaster at open-mesh.org
Fri Jan 4 11:09:05 CET 2019


Repository : ssh://git@open-mesh.org/batman-adv

On branch  : master

>---------------------------------------------------------------

commit 74c4b0c50f19f986752ee18ed393732f4eed7a66
Author: Sven Eckelmann <sven at narfation.org>
Date:   Mon Dec 31 22:46:09 2018 +0100

    batman-adv: Force mac header to start of data on xmit
    
    The caller of ndo_start_xmit may not already have called
    skb_reset_mac_header. The returned value of skb_mac_header/eth_hdr
    therefore can be in the wrong position and even outside the current skbuff.
    This for example happens when the user binds to the device using a
    PF_PACKET-SOCK_RAW with enabled qdisc-bypass:
    
      int opt = 4;
      setsockopt(sock, SOL_PACKET, PACKET_QDISC_BYPASS, &opt, sizeof(opt));
    
    Since eth_hdr is used all over the codebase, the batadv_interface_tx
    function must always take care of resetting it.
    
    Fixes: fe28a94c01e1 ("batman-adv: receive packets directly using skbs")
    Reported-by: syzbot+9d7405c7faa390e60b4e at syzkaller.appspotmail.com
    Reported-by: syzbot+7d20bc3f1ddddc0f9079 at syzkaller.appspotmail.com
    Signed-off-by: Sven Eckelmann <sven at narfation.org>


>---------------------------------------------------------------

74c4b0c50f19f986752ee18ed393732f4eed7a66
 net/batman-adv/soft-interface.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
index 5db5a0a4..b85ca809 100644
--- a/net/batman-adv/soft-interface.c
+++ b/net/batman-adv/soft-interface.c
@@ -221,6 +221,8 @@ static netdev_tx_t batadv_interface_tx(struct sk_buff *skb,
 
 	netif_trans_update(soft_iface);
 	vid = batadv_get_vid(skb, 0);
+
+	skb_reset_mac_header(skb);
 	ethhdr = eth_hdr(skb);
 
 	switch (ntohs(ethhdr->h_proto)) {



More information about the commits mailing list