|
@@ -1343,13 +1343,15 @@ static struct sk_buff *mld_newpack(struct net_device *dev, int size)
|
|
|
struct mld2_report *pmr;
|
|
|
struct in6_addr addr_buf;
|
|
|
const struct in6_addr *saddr;
|
|
|
+ int hlen = LL_RESERVED_SPACE(dev);
|
|
|
+ int tlen = dev->needed_tailroom;
|
|
|
int err;
|
|
|
u8 ra[8] = { IPPROTO_ICMPV6, 0,
|
|
|
IPV6_TLV_ROUTERALERT, 2, 0, 0,
|
|
|
IPV6_TLV_PADN, 0 };
|
|
|
|
|
|
/* we assume size > sizeof(ra) here */
|
|
|
- size += LL_ALLOCATED_SPACE(dev);
|
|
|
+ size += hlen + tlen;
|
|
|
/* limit our allocations to order-0 page */
|
|
|
size = min_t(int, size, SKB_MAX_ORDER(0, 0));
|
|
|
skb = sock_alloc_send_skb(sk, size, 1, &err);
|
|
@@ -1357,7 +1359,7 @@ static struct sk_buff *mld_newpack(struct net_device *dev, int size)
|
|
|
if (!skb)
|
|
|
return NULL;
|
|
|
|
|
|
- skb_reserve(skb, LL_RESERVED_SPACE(dev));
|
|
|
+ skb_reserve(skb, hlen);
|
|
|
|
|
|
if (ipv6_get_lladdr(dev, &addr_buf, IFA_F_TENTATIVE)) {
|
|
|
/* <draft-ietf-magma-mld-source-05.txt>:
|
|
@@ -1723,6 +1725,8 @@ static void igmp6_send(struct in6_addr *addr, struct net_device *dev, int type)
|
|
|
struct mld_msg *hdr;
|
|
|
const struct in6_addr *snd_addr, *saddr;
|
|
|
struct in6_addr addr_buf;
|
|
|
+ int hlen = LL_RESERVED_SPACE(dev);
|
|
|
+ int tlen = dev->needed_tailroom;
|
|
|
int err, len, payload_len, full_len;
|
|
|
u8 ra[8] = { IPPROTO_ICMPV6, 0,
|
|
|
IPV6_TLV_ROUTERALERT, 2, 0, 0,
|
|
@@ -1744,7 +1748,7 @@ static void igmp6_send(struct in6_addr *addr, struct net_device *dev, int type)
|
|
|
IPSTATS_MIB_OUT, full_len);
|
|
|
rcu_read_unlock();
|
|
|
|
|
|
- skb = sock_alloc_send_skb(sk, LL_ALLOCATED_SPACE(dev) + full_len, 1, &err);
|
|
|
+ skb = sock_alloc_send_skb(sk, hlen + tlen + full_len, 1, &err);
|
|
|
|
|
|
if (skb == NULL) {
|
|
|
rcu_read_lock();
|
|
@@ -1754,7 +1758,7 @@ static void igmp6_send(struct in6_addr *addr, struct net_device *dev, int type)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- skb_reserve(skb, LL_RESERVED_SPACE(dev));
|
|
|
+ skb_reserve(skb, hlen);
|
|
|
|
|
|
if (ipv6_get_lladdr(dev, &addr_buf, IFA_F_TENTATIVE)) {
|
|
|
/* <draft-ietf-magma-mld-source-05.txt>:
|