Included changes:
- fix Ethernet header access by jumping the correct batman-adv header -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iQIcBAABCAAGBQJRdO2PAAoJEADl0hg6qKeOLTMP/2m8535KXBbcGA7y9/p4m9pX OnB1YgJ21CdSfL4UYsmqyrmxT9wzYl96DNXEFAebEbLsECqAkt+89DN2f8qeuH/l q2UezLLudK/Ji0DFUBM+NvjX0mWB0bGIm8cLYLLgGULucjmvMY0mjCSG3RbrObSe vkxQCzQ3a/46LLrvMX+IkJ/HmbfzAKQE/egdGxJXvIADayVki+HuMNv0caI/o8CU NwrA3pAR1cGYFOEKeb8CkPQ31+YZyGH35WKbjhMSGC0IaMw65n1SvqT/rfcxzRip ilDjl8OK8d1qbJxyIw4ooJUj3TaDGbOWvZlYmGvjaY9NUlBojd+/Nbdl7C0+IVfP MHfeYzg63F0VGP1cHO2nUHPpvdkDh145/TJSLF2Uraa7bD9I8gIA21o+OGj/S3z/ F9kVLcYzMtZ08J8SRMGHzoCdTvFAc4BBnGtjzh7AnfmJR3OXYp2PUQZJHpSgTF7E pPYCInRr1kDrMq6Dn8/wtAbBqA+dnjesDEftKYb25H6s8BpseiFbLT4DyFuHU4Rb 25tHZJ8v1GzchVf023144n+wIUW/48XpG43E4VTzwlVuO01rHrUnrw3prhv7P1Ub 0334CGxu152O9LEyP5F5y8kUdnuP6TTQRqMp6eUztsQliqRDo5iLpFCFUZJeyS0c z6RHPDtH2lfEUnuhBFwi =+9vN -----END PGP SIGNATURE----- Merge tag 'batman-adv-fix-for-davem' of git://git.open-mesh.org/linux-merge Included changes: - fix Ethernet header access by jumping the correct batman-adv header Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
c510273a6c
|
@ -924,7 +924,7 @@ out:
|
|||
}
|
||||
|
||||
static int batadv_check_unicast_ttvn(struct batadv_priv *bat_priv,
|
||||
struct sk_buff *skb) {
|
||||
struct sk_buff *skb, int hdr_len) {
|
||||
uint8_t curr_ttvn, old_ttvn;
|
||||
struct batadv_orig_node *orig_node;
|
||||
struct ethhdr *ethhdr;
|
||||
|
@ -933,7 +933,7 @@ static int batadv_check_unicast_ttvn(struct batadv_priv *bat_priv,
|
|||
int is_old_ttvn;
|
||||
|
||||
/* check if there is enough data before accessing it */
|
||||
if (pskb_may_pull(skb, sizeof(*unicast_packet) + ETH_HLEN) < 0)
|
||||
if (pskb_may_pull(skb, hdr_len + ETH_HLEN) < 0)
|
||||
return 0;
|
||||
|
||||
/* create a copy of the skb (in case of for re-routing) to modify it. */
|
||||
|
@ -941,7 +941,7 @@ static int batadv_check_unicast_ttvn(struct batadv_priv *bat_priv,
|
|||
return 0;
|
||||
|
||||
unicast_packet = (struct batadv_unicast_packet *)skb->data;
|
||||
ethhdr = (struct ethhdr *)(skb->data + sizeof(*unicast_packet));
|
||||
ethhdr = (struct ethhdr *)(skb->data + hdr_len);
|
||||
|
||||
/* check if the destination client was served by this node and it is now
|
||||
* roaming. In this case, it means that the node has got a ROAM_ADV
|
||||
|
@ -1048,8 +1048,7 @@ int batadv_recv_unicast_packet(struct sk_buff *skb,
|
|||
|
||||
if (batadv_check_unicast_packet(bat_priv, skb, hdr_size) < 0)
|
||||
return NET_RX_DROP;
|
||||
|
||||
if (!batadv_check_unicast_ttvn(bat_priv, skb))
|
||||
if (!batadv_check_unicast_ttvn(bat_priv, skb, hdr_size))
|
||||
return NET_RX_DROP;
|
||||
|
||||
/* packet for me */
|
||||
|
@ -1093,7 +1092,7 @@ int batadv_recv_ucast_frag_packet(struct sk_buff *skb,
|
|||
if (batadv_check_unicast_packet(bat_priv, skb, hdr_size) < 0)
|
||||
return NET_RX_DROP;
|
||||
|
||||
if (!batadv_check_unicast_ttvn(bat_priv, skb))
|
||||
if (!batadv_check_unicast_ttvn(bat_priv, skb, hdr_size))
|
||||
return NET_RX_DROP;
|
||||
|
||||
unicast_packet = (struct batadv_unicast_frag_packet *)skb->data;
|
||||
|
|
Loading…
Reference in New Issue