From 9adf617dab796bed542273fc41304ac5ad063201 Mon Sep 17 00:00:00 2001 From: Thomas Graf Date: Tue, 15 Aug 2006 00:36:28 -0700 Subject: [PATCH] --- yaml --- r: 34495 b: refs/heads/master c: 280a306c539389156477cc9c07028d43fe4fbf86 h: refs/heads/master i: 34493: f039312359613152b4a94a479bb831a34669fc03 34491: f61c01d6b77c0e19c4dfa62ee0665f793b539135 34487: c7d6eb2fee6d524fec937e7a0eb3a216e73151e2 34479: 3934058c590839a7937942f0b2f78240a2f42737 34463: b42548c1dcbef057ac81d747fe7cd13490caeeff 34431: 4f35aa254804c6d9bc818c52d2c25e0c220a1957 v: v3 --- [refs] | 2 +- trunk/net/bridge/br_netlink.c | 31 +++++++++++++++---------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/[refs] b/[refs] index dbf68fd17076..96c6f5ec6734 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8c384bfa36b1dbeba8154da20d49167ce3e275c4 +refs/heads/master: 280a306c539389156477cc9c07028d43fe4fbf86 diff --git a/trunk/net/bridge/br_netlink.c b/trunk/net/bridge/br_netlink.c index 53086fb75089..8f661195d09d 100644 --- a/trunk/net/bridge/br_netlink.c +++ b/trunk/net/bridge/br_netlink.c @@ -12,6 +12,7 @@ #include #include +#include #include "br_private.h" /* @@ -76,26 +77,24 @@ static int br_fill_ifinfo(struct sk_buff *skb, const struct net_bridge_port *por void br_ifinfo_notify(int event, struct net_bridge_port *port) { struct sk_buff *skb; - int err = -ENOMEM; + int payload = sizeof(struct ifinfomsg) + 128; + int err = -ENOBUFS; pr_debug("bridge notify event=%d\n", event); - skb = alloc_skb(NLMSG_SPACE(sizeof(struct ifinfomsg) + 128), - GFP_ATOMIC); - if (!skb) - goto err_out; + skb = nlmsg_new(nlmsg_total_size(payload), GFP_ATOMIC); + if (skb == NULL) + goto errout; + + err = br_fill_ifinfo(skb, port, 0, 0, event, 0); + if (err < 0) { + kfree_skb(skb); + goto errout; + } - err = br_fill_ifinfo(skb, port, current->pid, 0, event, 0); + err = rtnl_notify(skb, 0, RTNLGRP_LINK, NULL, GFP_ATOMIC); +errout: if (err < 0) - goto err_kfree; - - NETLINK_CB(skb).dst_group = RTNLGRP_LINK; - netlink_broadcast(rtnl, skb, 0, RTNLGRP_LINK, GFP_ATOMIC); - return; - -err_kfree: - kfree_skb(skb); -err_out: - netlink_set_err(rtnl, 0, RTNLGRP_LINK, err); + rtnl_set_sk_err(RTNLGRP_LINK, err); } /*