summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--net/ipv4/igmp.c6
-rw-r--r--net/ipv6/addrconf.c1
-rw-r--r--net/ipv6/mcast.c6
3 files changed, 8 insertions, 5 deletions
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 8a370ef37d3f..3da126cea884 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -1473,7 +1473,9 @@ static void inet_ifmcaddr_notify(struct net_device *dev,
int err = -ENOMEM;
skb = nlmsg_new(NLMSG_ALIGN(sizeof(struct ifaddrmsg)) +
- nla_total_size(sizeof(__be32)), GFP_ATOMIC);
+ nla_total_size(sizeof(__be32)) +
+ nla_total_size(sizeof(struct ifa_cacheinfo)),
+ GFP_KERNEL);
if (!skb)
goto error;
@@ -1484,7 +1486,7 @@ static void inet_ifmcaddr_notify(struct net_device *dev,
goto error;
}
- rtnl_notify(skb, net, 0, RTNLGRP_IPV4_MCADDR, NULL, GFP_ATOMIC);
+ rtnl_notify(skb, net, 0, RTNLGRP_IPV4_MCADDR, NULL, GFP_KERNEL);
return;
error:
rtnl_set_sk_err(net, RTNLGRP_IPV4_MCADDR, err);
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 2e2684886953..4da409bc4577 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -5239,7 +5239,6 @@ int inet6_fill_ifmcaddr(struct sk_buff *skb,
nlmsg_end(skb, nlh);
return 0;
}
-EXPORT_SYMBOL(inet6_fill_ifmcaddr);
static int inet6_fill_ifacaddr(struct sk_buff *skb,
const struct ifacaddr6 *ifaca,
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index 587831c148de..9dfdb40988b0 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -920,7 +920,9 @@ static void inet6_ifmcaddr_notify(struct net_device *dev,
int err = -ENOMEM;
skb = nlmsg_new(NLMSG_ALIGN(sizeof(struct ifaddrmsg)) +
- nla_total_size(16), GFP_ATOMIC);
+ nla_total_size(sizeof(struct in6_addr)) +
+ nla_total_size(sizeof(struct ifa_cacheinfo)),
+ GFP_KERNEL);
if (!skb)
goto error;
@@ -931,7 +933,7 @@ static void inet6_ifmcaddr_notify(struct net_device *dev,
goto error;
}
- rtnl_notify(skb, net, 0, RTNLGRP_IPV6_MCADDR, NULL, GFP_ATOMIC);
+ rtnl_notify(skb, net, 0, RTNLGRP_IPV6_MCADDR, NULL, GFP_KERNEL);
return;
error:
rtnl_set_sk_err(net, RTNLGRP_IPV6_MCADDR, err);