batman-adv: Reserve extra bytes in skb for better alignment
The ethernet header is 14 bytes long. Therefore, the data after it is not 4 byte aligned and may cause problems on systems without unaligned data access. Reserving NET_IP_ALIGN more byes can fix the misalignment of the ethernet header. Signed-off-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de> Signed-off-by: Antonio Quartulli <ordex@autistici.org>
This commit is contained in:

committed by
Antonio Quartulli

parent
6f0a0986e3
commit
5b24657443
@@ -177,13 +177,13 @@ static ssize_t batadv_socket_write(struct file *file, const char __user *buff,
|
||||
if (len >= sizeof(struct batadv_icmp_packet_rr))
|
||||
packet_len = sizeof(struct batadv_icmp_packet_rr);
|
||||
|
||||
skb = dev_alloc_skb(packet_len + ETH_HLEN);
|
||||
skb = dev_alloc_skb(packet_len + ETH_HLEN + NET_IP_ALIGN);
|
||||
if (!skb) {
|
||||
len = -ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
skb_reserve(skb, ETH_HLEN);
|
||||
skb_reserve(skb, ETH_HLEN + NET_IP_ALIGN);
|
||||
icmp_packet = (struct batadv_icmp_packet_rr *)skb_put(skb, packet_len);
|
||||
|
||||
if (copy_from_user(icmp_packet, buff, packet_len)) {
|
||||
|
Reference in New Issue
Block a user