diff options
Diffstat (limited to 'net/core/rtnetlink.c')
-rw-r--r-- | net/core/rtnetlink.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index 2a0e21de3060..cf67144d3e3c 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -1647,9 +1647,8 @@ int rtnl_configure_link(struct net_device *dev, const struct ifinfomsg *ifm) | |||
1647 | } | 1647 | } |
1648 | 1648 | ||
1649 | dev->rtnl_link_state = RTNL_LINK_INITIALIZED; | 1649 | dev->rtnl_link_state = RTNL_LINK_INITIALIZED; |
1650 | rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U); | ||
1651 | 1650 | ||
1652 | __dev_notify_flags(dev, old_flags); | 1651 | __dev_notify_flags(dev, old_flags, ~0U); |
1653 | return 0; | 1652 | return 0; |
1654 | } | 1653 | } |
1655 | EXPORT_SYMBOL(rtnl_configure_link); | 1654 | EXPORT_SYMBOL(rtnl_configure_link); |
@@ -1985,14 +1984,15 @@ static int rtnl_dump_all(struct sk_buff *skb, struct netlink_callback *cb) | |||
1985 | return skb->len; | 1984 | return skb->len; |
1986 | } | 1985 | } |
1987 | 1986 | ||
1988 | void rtmsg_ifinfo(int type, struct net_device *dev, unsigned int change) | 1987 | void rtmsg_ifinfo(int type, struct net_device *dev, unsigned int change, |
1988 | gfp_t flags) | ||
1989 | { | 1989 | { |
1990 | struct net *net = dev_net(dev); | 1990 | struct net *net = dev_net(dev); |
1991 | struct sk_buff *skb; | 1991 | struct sk_buff *skb; |
1992 | int err = -ENOBUFS; | 1992 | int err = -ENOBUFS; |
1993 | size_t if_info_size; | 1993 | size_t if_info_size; |
1994 | 1994 | ||
1995 | skb = nlmsg_new((if_info_size = if_nlmsg_size(dev, 0)), GFP_KERNEL); | 1995 | skb = nlmsg_new((if_info_size = if_nlmsg_size(dev, 0)), flags); |
1996 | if (skb == NULL) | 1996 | if (skb == NULL) |
1997 | goto errout; | 1997 | goto errout; |
1998 | 1998 | ||
@@ -2003,7 +2003,7 @@ void rtmsg_ifinfo(int type, struct net_device *dev, unsigned int change) | |||
2003 | kfree_skb(skb); | 2003 | kfree_skb(skb); |
2004 | goto errout; | 2004 | goto errout; |
2005 | } | 2005 | } |
2006 | rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL, GFP_KERNEL); | 2006 | rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL, flags); |
2007 | return; | 2007 | return; |
2008 | errout: | 2008 | errout: |
2009 | if (err < 0) | 2009 | if (err < 0) |
@@ -2717,7 +2717,7 @@ static int rtnetlink_event(struct notifier_block *this, unsigned long event, voi | |||
2717 | case NETDEV_JOIN: | 2717 | case NETDEV_JOIN: |
2718 | break; | 2718 | break; |
2719 | default: | 2719 | default: |
2720 | rtmsg_ifinfo(RTM_NEWLINK, dev, 0); | 2720 | rtmsg_ifinfo(RTM_NEWLINK, dev, 0, GFP_KERNEL); |
2721 | break; | 2721 | break; |
2722 | } | 2722 | } |
2723 | return NOTIFY_DONE; | 2723 | return NOTIFY_DONE; |