net: pass info struct via netdevice notifier
authorJiri Pirko <jiri@resnulli.us>
Tue, 28 May 2013 01:30:21 +0000 (01:30 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 28 May 2013 20:11:01 +0000 (13:11 -0700)
So far, only net_device * could be passed along with netdevice notifier
event. This patch provides a possibility to pass custom structure
able to provide info that event listener needs to know.

Signed-off-by: Jiri Pirko <jiri@resnulli.us>
v2->v3: fix typo on simeth
shortened dev_getter
shortened notifier_info struct name
v1->v2: fix notifier_call parameter in call_netdevice_notifier()
Signed-off-by: David S. Miller <davem@davemloft.net>
80 files changed:
arch/ia64/hp/sim/simeth.c
arch/mips/txx9/generic/setup_tx4939.c
drivers/infiniband/core/cma.c
drivers/infiniband/hw/mlx4/main.c
drivers/net/bonding/bond_main.c
drivers/net/can/led.c
drivers/net/ethernet/broadcom/cnic.c
drivers/net/ethernet/marvell/skge.c
drivers/net/ethernet/marvell/sky2.c
drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
drivers/net/ethernet/sfc/efx.c
drivers/net/hamradio/bpqether.c
drivers/net/macvlan.c
drivers/net/macvtap.c
drivers/net/netconsole.c
drivers/net/ppp/pppoe.c
drivers/net/team/team.c
drivers/net/wan/dlci.c
drivers/net/wan/hdlc.c
drivers/net/wan/lapbether.c
drivers/scsi/fcoe/fcoe.c
drivers/scsi/fcoe/fcoe_transport.c
drivers/staging/csr/netdev.c
drivers/staging/ft1000/ft1000-pcmcia/ft1000_proc.c
drivers/staging/ft1000/ft1000-usb/ft1000_proc.c
drivers/staging/silicom/bpctl_mod.c
include/linux/netdevice.h
net/8021q/vlan.c
net/appletalk/aarp.c
net/appletalk/ddp.c
net/atm/clip.c
net/atm/mpc.c
net/ax25/af_ax25.c
net/batman-adv/hard-interface.c
net/bridge/br_notify.c
net/caif/caif_dev.c
net/caif/caif_usb.c
net/can/af_can.c
net/can/bcm.c
net/can/gw.c
net/can/raw.c
net/core/dev.c
net/core/drop_monitor.c
net/core/dst.c
net/core/fib_rules.c
net/core/netprio_cgroup.c
net/core/pktgen.c
net/core/rtnetlink.c
net/decnet/af_decnet.c
net/ieee802154/6lowpan.c
net/ipv4/arp.c
net/ipv4/devinet.c
net/ipv4/fib_frontend.c
net/ipv4/ipmr.c
net/ipv4/netfilter/ipt_MASQUERADE.c
net/ipv6/addrconf.c
net/ipv6/ip6mr.c
net/ipv6/ndisc.c
net/ipv6/netfilter/ip6t_MASQUERADE.c
net/ipv6/route.c
net/ipx/af_ipx.c
net/iucv/af_iucv.c
net/mac80211/iface.c
net/netfilter/ipvs/ip_vs_ctl.c
net/netfilter/nfnetlink_queue_core.c
net/netfilter/xt_TEE.c
net/netlabel/netlabel_unlabeled.c
net/netrom/af_netrom.c
net/openvswitch/dp_notify.c
net/packet/af_packet.c
net/phonet/pn_dev.c
net/rose/af_rose.c
net/sched/act_mirred.c
net/tipc/eth_media.c
net/tipc/ib_media.c
net/wireless/core.c
net/x25/af_x25.c
net/xfrm/xfrm_policy.c
security/selinux/netif.c

index c13064e422df6a28a1e544848376436bf4b8b54a..d1b04c4c95e308061c1292d09f0e6642489abdd7 100644 (file)
@@ -268,7 +268,7 @@ static __inline__ int dev_is_ethdev(struct net_device *dev)
 static int
 simeth_device_event(struct notifier_block *this,unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct simeth_local *local;
        struct in_device *in_dev;
        struct in_ifaddr **ifap = NULL;
index 729a50991780f7e6aceb022012e4278993c5a6a7..b7eccbd17bf7e72d3ec78250ecc0bc80f606b504 100644 (file)
@@ -331,7 +331,8 @@ static int tx4939_netdev_event(struct notifier_block *this,
                               unsigned long event,
                               void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
+
        if (event == NETDEV_CHANGE && netif_carrier_ok(dev)) {
                __u64 bit = 0;
                if (dev->irq == TXX9_IRQ_BASE + TX4939_IR_ETH(0))
index 71c2c71168028dbe6c8cfe6b3de314cc344d84cd..34fbc2f60a09debc72652b4e8ab8dcef0d09dbe7 100644 (file)
@@ -3269,9 +3269,9 @@ static int cma_netdev_change(struct net_device *ndev, struct rdma_id_private *id
 }
 
 static int cma_netdev_callback(struct notifier_block *self, unsigned long event,
-                              void *ctx)
+                              void *ptr)
 {
-       struct net_device *ndev = (struct net_device *)ctx;
+       struct net_device *ndev = netdev_notifier_info_to_dev(ptr);
        struct cma_device *cma_dev;
        struct rdma_id_private *id_priv;
        int ret = NOTIFY_DONE;
index 23d734349d8e45e31bb81776f59757687e1e135c..a188d31785590e9cf59c7f3bf77926a11817e4b7 100644 (file)
@@ -1161,7 +1161,7 @@ static void netdev_removed(struct mlx4_ib_dev *dev, int port)
 static int mlx4_ib_netdev_event(struct notifier_block *this, unsigned long event,
                                void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct mlx4_ib_dev *ibdev;
        struct net_device *oldnd;
        struct mlx4_ib_iboe *iboe;
index 29b846cbfb48d3380fa8dae7e87782e641e2519b..f4489d65bf338b3915be7da7e05eef5d6c81ba88 100644 (file)
@@ -3277,7 +3277,7 @@ static int bond_slave_netdev_event(unsigned long event,
 static int bond_netdev_event(struct notifier_block *this,
                             unsigned long event, void *ptr)
 {
-       struct net_device *event_dev = (struct net_device *)ptr;
+       struct net_device *event_dev = netdev_notifier_info_to_dev(ptr);
 
        pr_debug("event_dev: %s, event: %lx\n",
                 event_dev ? event_dev->name : "None",
index f27fca65dc4a3590f99e3e55428326c19e937425..a3d99a8fd2d19ee46f846448d2707f8dadf3e4af 100644 (file)
@@ -88,9 +88,9 @@ EXPORT_SYMBOL_GPL(devm_can_led_init);
 
 /* NETDEV rename notifier to rename the associated led triggers too */
 static int can_led_notifier(struct notifier_block *nb, unsigned long msg,
-                       void *data)
+                           void *ptr)
 {
-       struct net_device *netdev = data;
+       struct net_device *netdev = netdev_notifier_info_to_dev(ptr);
        struct can_priv *priv = safe_candev_priv(netdev);
        char name[CAN_LED_NAME_SZ];
 
index 6b0dc131b20ea3fd057fdd8c1fa98243ecbdf42c..d78d4cf140ed6d20a0e513d3c974740cf6c145cd 100644 (file)
@@ -5622,7 +5622,7 @@ static void cnic_rcv_netevent(struct cnic_local *cp, unsigned long event,
 static int cnic_netdev_event(struct notifier_block *this, unsigned long event,
                                                         void *ptr)
 {
-       struct net_device *netdev = ptr;
+       struct net_device *netdev = netdev_notifier_info_to_dev(ptr);
        struct cnic_dev *dev;
        int new_dev = 0;
 
index 171f4b3dda07ae5fc4f9986c36102beeab8de49e..c896079728e1312893fdf03f0b0e111f2a6676cc 100644 (file)
@@ -3706,7 +3706,7 @@ static const struct file_operations skge_debug_fops = {
 static int skge_device_event(struct notifier_block *unused,
                             unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct skge_port *skge;
        struct dentry *d;
 
index d175bbd3ffd37952f5dc2e66348049693ac7d2d7..e09a8c6f85366c4c1251f5365549e154f743f08c 100644 (file)
@@ -4642,7 +4642,7 @@ static const struct file_operations sky2_debug_fops = {
 static int sky2_device_event(struct notifier_block *unused,
                             unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct sky2_port *sky2 = netdev_priv(dev);
 
        if (dev->netdev_ops->ndo_open != sky2_open || !sky2_debug)
index af951f343ff6d1396589ffbbf462aa2c7a80c776..51e13d92761ef73655e36775666fc552d8173461 100644 (file)
@@ -3311,7 +3311,7 @@ static int netxen_netdev_event(struct notifier_block *this,
                                 unsigned long event, void *ptr)
 {
        struct netxen_adapter *adapter;
-       struct net_device *dev = (struct net_device *)ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net_device *orig_dev = dev;
        struct net_device *slave;
 
index da82f2eb73b4117ecdc241c35211b3fe507ddb8b..6bb56d43614b111afb101736794a3395d0bd172f 100644 (file)
@@ -3530,7 +3530,7 @@ static int qlcnic_netdev_event(struct notifier_block *this,
                                 unsigned long event, void *ptr)
 {
        struct qlcnic_adapter *adapter;
-       struct net_device *dev = (struct net_device *)ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
 recheck:
        if (dev == NULL)
index 39e4cb39de29493d30079f3ddcfc81e46cfbf5b4..46cc11d5e205a22cdb6e6e4308731ea0b75b8b93 100644 (file)
@@ -2120,7 +2120,7 @@ static void efx_update_name(struct efx_nic *efx)
 static int efx_netdev_event(struct notifier_block *this,
                            unsigned long event, void *ptr)
 {
-       struct net_device *net_dev = ptr;
+       struct net_device *net_dev = netdev_notifier_info_to_dev(ptr);
 
        if (net_dev->netdev_ops == &efx_netdev_ops &&
            event == NETDEV_CHANGENAME)
index 02de6c891670b87b9f19ef9a418b27ce39fa745c..f91bf0ddf031a077b89d961ca5cb16c87f8321ac 100644 (file)
@@ -103,7 +103,7 @@ static struct packet_type bpq_packet_type __read_mostly = {
 };
 
 static struct notifier_block bpq_dev_notifier = {
-       .notifier_call =bpq_device_event,
+       .notifier_call = bpq_device_event,
 };
 
 
@@ -544,9 +544,10 @@ static void bpq_free_device(struct net_device *ndev)
 /*
  *     Handle device status changes.
  */
-static int bpq_device_event(struct notifier_block *this,unsigned long event, void *ptr)
+static int bpq_device_event(struct notifier_block *this,
+                           unsigned long event, void *ptr)
 {
-       struct net_device *dev = (struct net_device *)ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (!net_eq(dev_net(dev), &init_net))
                return NOTIFY_DONE;
index 1c502bb0c916ff549ab10400af5d24b7f61c4866..edfddc5f61b46a06dd0c333aed321e42e3c150cb 100644 (file)
@@ -921,7 +921,7 @@ static struct rtnl_link_ops macvlan_link_ops = {
 static int macvlan_device_event(struct notifier_block *unused,
                                unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct macvlan_dev *vlan, *next;
        struct macvlan_port *port;
        LIST_HEAD(list_kill);
index 59e9605de316809a702951a5c6de3dbee3a43a69..68efb91a56335b66552868a93ddb643ef8c33bc6 100644 (file)
@@ -1053,7 +1053,7 @@ EXPORT_SYMBOL_GPL(macvtap_get_socket);
 static int macvtap_device_event(struct notifier_block *unused,
                                unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct macvlan_dev *vlan;
        struct device *classdev;
        dev_t devt;
index 59ac143dec2576a697d9f383ef4d5d7372eef93c..1d1d0a12765ce943b1bb309bdcbc0534908d8f53 100644 (file)
@@ -653,12 +653,11 @@ static struct configfs_subsystem netconsole_subsys = {
 
 /* Handle network interface device notifications */
 static int netconsole_netdev_event(struct notifier_block *this,
-                                  unsigned long event,
-                                  void *ptr)
+                                  unsigned long event, void *ptr)
 {
        unsigned long flags;
        struct netconsole_target *nt;
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        bool stopped = false;
 
        if (!(event == NETDEV_CHANGENAME || event == NETDEV_UNREGISTER ||
index bb07ba94c3aaedb8949c310d340c18ae1b9ab284..5f66e30d98239651283ec200cbf3c842e60eb2ae 100644 (file)
@@ -338,7 +338,7 @@ static void pppoe_flush_dev(struct net_device *dev)
 static int pppoe_device_event(struct notifier_block *this,
                              unsigned long event, void *ptr)
 {
-       struct net_device *dev = (struct net_device *)ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        /* Only look at sockets that are using this specific device. */
        switch (event) {
index 7c43261975bd1d57e93a4b35382e42c92891cfb1..9273f48a512bbf97c2df63bdb6d8a3dc08d07a5e 100644 (file)
@@ -2647,7 +2647,7 @@ static void team_port_change_check(struct team_port *port, bool linkup)
 static int team_device_event(struct notifier_block *unused,
                             unsigned long event, void *ptr)
 {
-       struct net_device *dev = (struct net_device *) ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct team_port *port;
 
        port = team_port_get_rtnl(dev);
index 147614ed86aa8ae5d4a8a5451304337a70bb0960..70ac59929f800af871f422a4a18b91102e4e78df 100644 (file)
@@ -477,7 +477,7 @@ static void dlci_setup(struct net_device *dev)
 static int dlci_dev_event(struct notifier_block *unused,
                          unsigned long event, void *ptr)
 {
-       struct net_device *dev = (struct net_device *) ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (dev_net(dev) != &init_net)
                return NOTIFY_DONE;
index a0a932c63d0a29e367daad9febe6ccf7f6370f3d..9c33ca918e19f7c03bc66ee8aff4b5365ec031eb 100644 (file)
@@ -99,7 +99,7 @@ static inline void hdlc_proto_stop(struct net_device *dev)
 static int hdlc_device_event(struct notifier_block *this, unsigned long event,
                             void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        hdlc_device *hdlc;
        unsigned long flags;
        int on;
index a73b49eb87e37a150c6096299a08460ad921d32d..a33a46fa88dd0216871502622a0f06b976ac94d5 100644 (file)
@@ -370,7 +370,7 @@ static int lapbeth_device_event(struct notifier_block *this,
                                unsigned long event, void *ptr)
 {
        struct lapbethdev *lapbeth;
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (dev_net(dev) != &init_net)
                return NOTIFY_DONE;
index 292b24f9bf935f119ab12dbbca96d5a00d16783d..ee721b6cbcdf891c4d08250e68ccfb9e82c6ceb2 100644 (file)
@@ -1975,7 +1975,7 @@ static int fcoe_device_notification(struct notifier_block *notifier,
 {
        struct fcoe_ctlr_device *cdev;
        struct fc_lport *lport = NULL;
-       struct net_device *netdev = ptr;
+       struct net_device *netdev = netdev_notifier_info_to_dev(ptr);
        struct fcoe_ctlr *ctlr;
        struct fcoe_interface *fcoe;
        struct fcoe_port *port;
index f3a5a53e863133203044814f892286704cf70630..01adbe0ec53b89af776957d1b4cc58038aae818a 100644 (file)
@@ -704,7 +704,7 @@ static struct net_device *fcoe_if_to_netdev(const char *buffer)
 static int libfcoe_device_notification(struct notifier_block *notifier,
                                    ulong event, void *ptr)
 {
-       struct net_device *netdev = ptr;
+       struct net_device *netdev = netdev_notifier_info_to_dev(ptr);
 
        switch (event) {
        case NETDEV_UNREGISTER:
index a0177d998978fe25524a333fc557bdada13d2c42..d49cdf84a496d405568024bd39c2f21577cab68f 100644 (file)
@@ -2891,7 +2891,7 @@ void uf_net_get_name(struct net_device *dev, char *name, int len)
  */
 static int
 uf_netdev_event(struct notifier_block *notif, unsigned long event, void* ptr) {
-    struct net_device *netdev = ptr;
+    struct net_device *netdev = netdev_notifier_info_to_dev(ptr);
     netInterface_priv_t *interfacePriv = (netInterface_priv_t *)netdev_priv(netdev);
     unifi_priv_t *priv = NULL;
     static const CsrWifiMacAddress broadcast_address = {{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}};
index 94e426e4d98b0177b72065bf630c4eae1b490925..b2330f1df7e7066ab15aae5707a79f6fc7b32b2e 100644 (file)
@@ -164,7 +164,7 @@ static const struct file_operations ft1000_proc_fops = {
 static int ft1000NotifyProc(struct notifier_block *this, unsigned long event,
                                void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct ft1000_info *info;
 
        info = netdev_priv(dev);
index eca6f0292b4bcc9d2c9829cff401d5e0bd645ab8..5ead942be680c38962c251349033e44faec9c807 100644 (file)
@@ -166,7 +166,7 @@ static const struct file_operations ft1000_proc_fops = {
 static int
 ft1000NotifyProc(struct notifier_block *this, unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct ft1000_info *info;
        struct proc_dir_entry *ft1000_proc_file;
 
index b7e570ccb759dd4514a17206238b87dbe0299282..c8ddb99e852686205538a62dcc6fd3afe9688863 100644 (file)
@@ -133,7 +133,7 @@ static unsigned long str_to_hex(char *p);
 static int bp_device_event(struct notifier_block *unused,
                           unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        static bpctl_dev_t *pbpctl_dev = NULL, *pbpctl_dev_m = NULL;
        int dev_num = 0, ret = 0, ret_d = 0, time_left = 0;
        /* printk("BP_PROC_SUPPORT event =%d %s %d\n", event,dev->name, dev->ifindex ); */
index 6b2bb460d1d750d7c4768a90a5d33c2ab48484a3..13a34848b5e1e4a45ac4069902184d89eb99fd94 100644 (file)
@@ -1599,6 +1599,19 @@ struct packet_offload {
 
 extern int register_netdevice_notifier(struct notifier_block *nb);
 extern int unregister_netdevice_notifier(struct notifier_block *nb);
+
+struct netdev_notifier_info {
+       struct net_device *dev;
+};
+
+static inline struct net_device *
+netdev_notifier_info_to_dev(const struct netdev_notifier_info *info)
+{
+       return info->dev;
+}
+
+extern int call_netdevice_notifiers_info(unsigned long val, struct net_device *dev,
+                                        struct netdev_notifier_info *info);
 extern int call_netdevice_notifiers(unsigned long val, struct net_device *dev);
 
 
index 9424f3718ea703adc1019193a30352ad95981e6a..2fb2d88e8c2e329ec11653c20478bede1c4e5ad8 100644 (file)
@@ -341,7 +341,7 @@ static void __vlan_device_event(struct net_device *dev, unsigned long event)
 static int vlan_device_event(struct notifier_block *unused, unsigned long event,
                             void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct vlan_group *grp;
        struct vlan_info *vlan_info;
        int i, flgs;
index 173a2e82f486b4ee19411b18842e61f57b05a58c..690356fa52b99a2d66a8522c448c51ba7eedba5f 100644 (file)
@@ -332,7 +332,7 @@ static void aarp_expire_timeout(unsigned long unused)
 static int aarp_device_event(struct notifier_block *this, unsigned long event,
                             void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        int ct;
 
        if (!net_eq(dev_net(dev), &init_net))
index ef12839a7cfe55b6ee99b2be667c0cd9fb829f79..7fee50d637f956240a6146b342e7723a131ce4bd 100644 (file)
@@ -644,7 +644,7 @@ static inline void atalk_dev_down(struct net_device *dev)
 static int ddp_device_event(struct notifier_block *this, unsigned long event,
                            void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (!net_eq(dev_net(dev), &init_net))
                return NOTIFY_DONE;
index 8ae3a7879335f28cc082ea6c2a3bf8da2b8820a3..cce241eb01d94547f399a154270a9dd778d1570a 100644 (file)
@@ -539,9 +539,9 @@ static int clip_create(int number)
 }
 
 static int clip_device_event(struct notifier_block *this, unsigned long event,
-                            void *arg)
+                            void *ptr)
 {
-       struct net_device *dev = arg;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (!net_eq(dev_net(dev), &init_net))
                return NOTIFY_DONE;
index d4cc1be5c36469ea2b24b7dbb9375e364e6986b0..3af12755cd04851147b8e4661fd312e29abd0691 100644 (file)
@@ -998,14 +998,12 @@ int msg_to_mpoad(struct k_message *mesg, struct mpoa_client *mpc)
 }
 
 static int mpoa_event_listener(struct notifier_block *mpoa_notifier,
-                              unsigned long event, void *dev_ptr)
+                              unsigned long event, void *ptr)
 {
-       struct net_device *dev;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct mpoa_client *mpc;
        struct lec_priv *priv;
 
-       dev = dev_ptr;
-
        if (!net_eq(dev_net(dev), &init_net))
                return NOTIFY_DONE;
 
index e277e38f736b93a133a6cd43cc7b264acfbad641..4b4d2b779ec1a08202303863fea1b74c67f04383 100644 (file)
@@ -111,9 +111,9 @@ again:
  *     Handle device status changes.
  */
 static int ax25_device_event(struct notifier_block *this, unsigned long event,
-       void *ptr)
+                            void *ptr)
 {
-       struct net_device *dev = (struct net_device *)ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (!net_eq(dev_net(dev), &init_net))
                return NOTIFY_DONE;
@@ -1974,7 +1974,7 @@ static struct packet_type ax25_packet_type __read_mostly = {
 };
 
 static struct notifier_block ax25_dev_notifier = {
-       .notifier_call =ax25_device_event,
+       .notifier_call = ax25_device_event,
 };
 
 static int __init ax25_init(void)
index 522243aff2f3b4a45895efea0752405bbee95fa9..b6504eac0ed800aa66299b957b4a0d6f333f679e 100644 (file)
@@ -595,7 +595,7 @@ void batadv_hardif_remove_interfaces(void)
 static int batadv_hard_if_event(struct notifier_block *this,
                                unsigned long event, void *ptr)
 {
-       struct net_device *net_dev = ptr;
+       struct net_device *net_dev = netdev_notifier_info_to_dev(ptr);
        struct batadv_hard_iface *hard_iface;
        struct batadv_hard_iface *primary_if = NULL;
        struct batadv_priv *bat_priv;
index 1644b3e1f947a554f944b3e6cf655a0346d7dc66..3a3f371b28415c110e4db6a21069f9153dafe904 100644 (file)
@@ -31,7 +31,7 @@ struct notifier_block br_device_notifier = {
  */
 static int br_device_event(struct notifier_block *unused, unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net_bridge_port *p;
        struct net_bridge *br;
        bool changed_addr;
index 1f9ece1a9c344655708c7d0e015ed0a46dd56a03..4dca159435cfe17dcc09fadccfebee7ca49b1075 100644 (file)
@@ -352,9 +352,9 @@ EXPORT_SYMBOL(caif_enroll_dev);
 
 /* notify Caif of device events */
 static int caif_device_notify(struct notifier_block *me, unsigned long what,
-                             void *arg)
+                             void *ptr)
 {
-       struct net_device *dev = arg;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct caif_device_entry *caifd = NULL;
        struct caif_dev_common *caifdev;
        struct cfcnfg *cfg;
index 942e00a425fd9b015118cb7a0982209c1989003b..75ed04b78fa4090f69329cccd0cebd04bc516290 100644 (file)
@@ -121,9 +121,9 @@ static struct packet_type caif_usb_type __read_mostly = {
 };
 
 static int cfusbl_device_notify(struct notifier_block *me, unsigned long what,
-                               void *arg)
+                               void *ptr)
 {
-       struct net_device *dev = arg;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct caif_dev_common common;
        struct cflayer *layer, *link_support;
        struct usbnet *usbnet;
index c4e50852c9f4aa8e195ed57e711890210cea1e1c..3ab8dd2e12828fea31d97b59dbeb3fe7521e953b 100644 (file)
@@ -794,9 +794,9 @@ EXPORT_SYMBOL(can_proto_unregister);
  * af_can notifier to create/remove CAN netdevice specific structs
  */
 static int can_notifier(struct notifier_block *nb, unsigned long msg,
-                       void *data)
+                       void *ptr)
 {
-       struct net_device *dev = (struct net_device *)data;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct dev_rcv_lists *d;
 
        if (!net_eq(dev_net(dev), &init_net))
index 8f113e6ff32750d3809c3ab38117d6ad1ebc8f38..46f20bfafc0ed510421cf743ad3674efce803018 100644 (file)
@@ -1350,9 +1350,9 @@ static int bcm_sendmsg(struct kiocb *iocb, struct socket *sock,
  * notification handler for netdevice status changes
  */
 static int bcm_notifier(struct notifier_block *nb, unsigned long msg,
-                       void *data)
+                       void *ptr)
 {
-       struct net_device *dev = (struct net_device *)data;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct bcm_sock *bo = container_of(nb, struct bcm_sock, notifier);
        struct sock *sk = &bo->sk;
        struct bcm_op *op;
index 3ee690e8c7d32354a525ad398291b7b7c5155215..2f291f961a170018f1464fb50f4faa272887a50d 100644 (file)
@@ -445,9 +445,9 @@ static inline void cgw_unregister_filter(struct cgw_job *gwj)
 }
 
 static int cgw_notifier(struct notifier_block *nb,
-                       unsigned long msg, void *data)
+                       unsigned long msg, void *ptr)
 {
-       struct net_device *dev = (struct net_device *)data;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (!net_eq(dev_net(dev), &init_net))
                return NOTIFY_DONE;
index 1085e65f848eab9a3a634ad16b37d70bd80830b5..641e1c895123ac114330635c43d0b2ed778c2ae7 100644 (file)
@@ -239,9 +239,9 @@ static int raw_enable_allfilters(struct net_device *dev, struct sock *sk)
 }
 
 static int raw_notifier(struct notifier_block *nb,
-                       unsigned long msg, void *data)
+                       unsigned long msg, void *ptr)
 {
-       struct net_device *dev = (struct net_device *)data;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct raw_sock *ro = container_of(nb, struct raw_sock, notifier);
        struct sock *sk = &ro->sk;
 
index 5f747974ac5870012b18ea02a60bb46033b40715..54fce6006a83a4f213fde226979f72ae9a4e4473 100644 (file)
@@ -1391,6 +1391,20 @@ void dev_disable_lro(struct net_device *dev)
 }
 EXPORT_SYMBOL(dev_disable_lro);
 
+static void netdev_notifier_info_init(struct netdev_notifier_info *info,
+                                     struct net_device *dev)
+{
+       info->dev = dev;
+}
+
+static int call_netdevice_notifier(struct notifier_block *nb, unsigned long val,
+                                  struct net_device *dev)
+{
+       struct netdev_notifier_info info;
+
+       netdev_notifier_info_init(&info, dev);
+       return nb->notifier_call(nb, val, &info);
+}
 
 static int dev_boot_phase = 1;
 
@@ -1423,7 +1437,7 @@ int register_netdevice_notifier(struct notifier_block *nb)
                goto unlock;
        for_each_net(net) {
                for_each_netdev(net, dev) {
-                       err = nb->notifier_call(nb, NETDEV_REGISTER, dev);
+                       err = call_netdevice_notifier(nb, NETDEV_REGISTER, dev);
                        err = notifier_to_errno(err);
                        if (err)
                                goto rollback;
@@ -1431,7 +1445,7 @@ int register_netdevice_notifier(struct notifier_block *nb)
                        if (!(dev->flags & IFF_UP))
                                continue;
 
-                       nb->notifier_call(nb, NETDEV_UP, dev);
+                       call_netdevice_notifier(nb, NETDEV_UP, dev);
                }
        }
 
@@ -1447,10 +1461,11 @@ rollback:
                                goto outroll;
 
                        if (dev->flags & IFF_UP) {
-                               nb->notifier_call(nb, NETDEV_GOING_DOWN, dev);
-                               nb->notifier_call(nb, NETDEV_DOWN, dev);
+                               call_netdevice_notifier(nb, NETDEV_GOING_DOWN,
+                                                       dev);
+                               call_netdevice_notifier(nb, NETDEV_DOWN, dev);
                        }
-                       nb->notifier_call(nb, NETDEV_UNREGISTER, dev);
+                       call_netdevice_notifier(nb, NETDEV_UNREGISTER, dev);
                }
        }
 
@@ -1488,10 +1503,11 @@ int unregister_netdevice_notifier(struct notifier_block *nb)
        for_each_net(net) {
                for_each_netdev(net, dev) {
                        if (dev->flags & IFF_UP) {
-                               nb->notifier_call(nb, NETDEV_GOING_DOWN, dev);
-                               nb->notifier_call(nb, NETDEV_DOWN, dev);
+                               call_netdevice_notifier(nb, NETDEV_GOING_DOWN,
+                                                       dev);
+                               call_netdevice_notifier(nb, NETDEV_DOWN, dev);
                        }
-                       nb->notifier_call(nb, NETDEV_UNREGISTER, dev);
+                       call_netdevice_notifier(nb, NETDEV_UNREGISTER, dev);
                }
        }
 unlock:
@@ -1500,6 +1516,25 @@ unlock:
 }
 EXPORT_SYMBOL(unregister_netdevice_notifier);
 
+/**
+ *     call_netdevice_notifiers_info - call all network notifier blocks
+ *     @val: value passed unmodified to notifier function
+ *     @dev: net_device pointer passed unmodified to notifier function
+ *     @info: notifier information data
+ *
+ *     Call all network notifier blocks.  Parameters and return value
+ *     are as for raw_notifier_call_chain().
+ */
+
+int call_netdevice_notifiers_info(unsigned long val, struct net_device *dev,
+                                 struct netdev_notifier_info *info)
+{
+       ASSERT_RTNL();
+       netdev_notifier_info_init(info, dev);
+       return raw_notifier_call_chain(&netdev_chain, val, info);
+}
+EXPORT_SYMBOL(call_netdevice_notifiers_info);
+
 /**
  *     call_netdevice_notifiers - call all network notifier blocks
  *      @val: value passed unmodified to notifier function
@@ -1511,8 +1546,9 @@ EXPORT_SYMBOL(unregister_netdevice_notifier);
 
 int call_netdevice_notifiers(unsigned long val, struct net_device *dev)
 {
-       ASSERT_RTNL();
-       return raw_notifier_call_chain(&netdev_chain, val, dev);
+       struct netdev_notifier_info info;
+
+       return call_netdevice_notifiers_info(val, dev, &info);
 }
 EXPORT_SYMBOL(call_netdevice_notifiers);
 
index d23b6682f4e95cfd029cd19db31252184ec03d2d..5e78d44333b9bc39fdb56fdd489d0ac4f7f5d4e8 100644 (file)
@@ -295,9 +295,9 @@ static int net_dm_cmd_trace(struct sk_buff *skb,
 }
 
 static int dropmon_net_event(struct notifier_block *ev_block,
-                       unsigned long event, void *ptr)
+                            unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct dm_hw_stat_delta *new_stat = NULL;
        struct dm_hw_stat_delta *tmp;
 
index df9cc810ec8e3a78bbdb3b4480deeb8fd35df721..ca4231ec734787be93c9ebc1e6c69d4a30bf24a5 100644 (file)
@@ -372,7 +372,7 @@ static void dst_ifdown(struct dst_entry *dst, struct net_device *dev,
 static int dst_dev_event(struct notifier_block *this, unsigned long event,
                         void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct dst_entry *dst, *last = NULL;
 
        switch (event) {
index d5a9f8ead0d864305110f2ca6f1dc70fca5b84cd..21735440c44a85b611308e6b3c97bef77452c9a1 100644 (file)
@@ -705,9 +705,9 @@ static void detach_rules(struct list_head *rules, struct net_device *dev)
 
 
 static int fib_rules_event(struct notifier_block *this, unsigned long event,
-                           void *ptr)
+                          void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net *net = dev_net(dev);
        struct fib_rules_ops *ops;
 
index 0777d0aa18c3814a42a338a25d3508d9654c5797..e533259dce3ccad8a04cc095fa0056b8693fde70 100644 (file)
@@ -261,7 +261,7 @@ struct cgroup_subsys net_prio_subsys = {
 static int netprio_device_event(struct notifier_block *unused,
                                unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct netprio_map *old;
 
        /*
index 11f2704c3810d54b3539daddea36d50ef230636f..795498fd4587ed8b3b4d6cc5f2fa6767e3993b8d 100644 (file)
@@ -1921,7 +1921,7 @@ static void pktgen_change_name(const struct pktgen_net *pn, struct net_device *d
 static int pktgen_device_event(struct notifier_block *unused,
                               unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct pktgen_net *pn = net_generic(dev_net(dev), pg_net_id);
 
        if (pn->pktgen_exiting)
index a08bd2b7fe3f06901d6c75e82df5e51e1aa2234f..49c14451d8ab81b9f9ebd75238e5374d4067c397 100644 (file)
@@ -2667,7 +2667,7 @@ static void rtnetlink_rcv(struct sk_buff *skb)
 
 static int rtnetlink_event(struct notifier_block *this, unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        switch (event) {
        case NETDEV_UP:
index c21f200eed9342c6ab34ee665fd5cc72c34f9cd0..dd4d506ef92395a9124a73391dd69beb92ed0388 100644 (file)
@@ -2078,9 +2078,9 @@ out_err:
 }
 
 static int dn_device_event(struct notifier_block *this, unsigned long event,
-                       void *ptr)
+                          void *ptr)
 {
-       struct net_device *dev = (struct net_device *)ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (!net_eq(dev_net(dev), &init_net))
                return NOTIFY_DONE;
index 55e1fd5b3e56d4ede22c2a05a6f72cc3b4bffa44..3b9d5f20bd1c695de768db960b190beb4370fa35 100644 (file)
@@ -1352,10 +1352,9 @@ static inline void lowpan_netlink_fini(void)
 }
 
 static int lowpan_device_event(struct notifier_block *unused,
-                               unsigned long event,
-                               void *ptr)
+                              unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        LIST_HEAD(del_list);
        struct lowpan_dev_record *entry, *tmp;
 
index 247ec1951c35bed69d2182c6119085b9a7b2da96..bf574029a1839230ee5bf36537772f80836b3edc 100644 (file)
@@ -1234,7 +1234,7 @@ out:
 static int arp_netdev_event(struct notifier_block *this, unsigned long event,
                            void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        switch (event) {
        case NETDEV_CHANGEADDR:
index dfc39d4d48b7471fc83035746026fa14d1dcf497..b047e2d8a614f2ee561f0741687d058b0deafa06 100644 (file)
@@ -1333,7 +1333,7 @@ static void inetdev_send_gratuitous_arp(struct net_device *dev,
 static int inetdev_event(struct notifier_block *this, unsigned long event,
                         void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct in_device *in_dev = __in_dev_get_rtnl(dev);
 
        ASSERT_RTNL();
index c7629a209f9d84538b8048de89ce66aa3776a9bb..05a4888dede9868681651ddacffd68664d5933c6 100644 (file)
@@ -1038,7 +1038,7 @@ static int fib_inetaddr_event(struct notifier_block *this, unsigned long event,
 
 static int fib_netdev_event(struct notifier_block *this, unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct in_device *in_dev;
        struct net *net = dev_net(dev);
 
index 9d9610ae78553895e9f6ccb0ea8260fa4a66ac17..f975399f3522187efc39a1f6be4ddece4e522688 100644 (file)
@@ -1609,7 +1609,7 @@ int ipmr_compat_ioctl(struct sock *sk, unsigned int cmd, void __user *arg)
 
 static int ipmr_device_event(struct notifier_block *this, unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net *net = dev_net(dev);
        struct mr_table *mrt;
        struct vif_device *v;
index 5d5d4d1be9c2c7c2c951943e5a7d7ce7a4b940d4..dd5508bde799706c3f5a9fd41561b2b9c296e110 100644 (file)
@@ -108,7 +108,7 @@ static int masq_device_event(struct notifier_block *this,
                             unsigned long event,
                             void *ptr)
 {
-       const struct net_device *dev = ptr;
+       const struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net *net = dev_net(dev);
 
        if (event == NETDEV_DOWN) {
index 432e084b6b62c59b107deb5fd43cf60ad64d8523..bce073b4bbd43824d17abc82e4d55e9779f44a7d 100644 (file)
@@ -2826,9 +2826,9 @@ static void addrconf_ip6_tnl_config(struct net_device *dev)
 }
 
 static int addrconf_notify(struct notifier_block *this, unsigned long event,
-                          void *data)
+                          void *ptr)
 {
-       struct net_device *dev = (struct net_device *) data;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct inet6_dev *idev = __in6_dev_get(dev);
        int run_pending = 0;
        int err;
index 241fb8ad9fcf28e2982f32e23ff9b7403ceef24a..583e8d435f9a2c47437d3897b7167ac4a4025a40 100644 (file)
@@ -1319,7 +1319,7 @@ static int ip6mr_mfc_delete(struct mr6_table *mrt, struct mf6cctl *mfc,
 static int ip6mr_device_event(struct notifier_block *this,
                              unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net *net = dev_net(dev);
        struct mr6_table *mrt;
        struct mif_device *v;
index 2712ab22a174087c09cc705e1f6adec2bd601154..a0962697a25743559b105c33a1114a2d2fdfda5e 100644 (file)
@@ -1568,7 +1568,7 @@ int ndisc_rcv(struct sk_buff *skb)
 
 static int ndisc_netdev_event(struct notifier_block *this, unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net *net = dev_net(dev);
        struct inet6_dev *idev;
 
index 60e9053bab051abb1e69aadabcf36f39292d8e03..b76257cd7e1e6b9f8a99d9ece7c88b14e376f540 100644 (file)
@@ -71,7 +71,7 @@ static int device_cmp(struct nf_conn *ct, void *ifindex)
 static int masq_device_event(struct notifier_block *this,
                             unsigned long event, void *ptr)
 {
-       const struct net_device *dev = ptr;
+       const struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net *net = dev_net(dev);
 
        if (event == NETDEV_DOWN)
index ad0aa6b0b86ae02f80b6b2184588605a3d5d7a6c..194c3cde15365f84d360408e1489ff4714159a6e 100644 (file)
@@ -2681,9 +2681,9 @@ errout:
 }
 
 static int ip6_route_dev_notify(struct notifier_block *this,
-                               unsigned long event, void *data)
+                               unsigned long event, void *ptr)
 {
-       struct net_device *dev = (struct net_device *)data;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net *net = dev_net(dev);
 
        if (event == NETDEV_REGISTER && (dev->flags & IFF_LOOPBACK)) {
index f547a47d381ca0596244bfbf692ef8134b508ccc..7a1e0fc1bd4dd2ca8f31d8a376d94a30406cb1e1 100644 (file)
@@ -330,7 +330,7 @@ static __inline__ void __ipxitf_put(struct ipx_interface *intrfc)
 static int ipxitf_device_event(struct notifier_block *notifier,
                                unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct ipx_interface *i, *tmp;
 
        if (!net_eq(dev_net(dev), &init_net))
index ae691651b72141d649a4cca1aaaedc8920db5192..168aff5e60de528194a1f4b8ea836cf394ea6613 100644 (file)
@@ -2293,7 +2293,7 @@ out_unlock:
 static int afiucv_netdev_event(struct notifier_block *this,
                               unsigned long event, void *ptr)
 {
-       struct net_device *event_dev = (struct net_device *)ptr;
+       struct net_device *event_dev = netdev_notifier_info_to_dev(ptr);
        struct sock *sk;
        struct iucv_sock *iucv;
 
index 60f1ce5e5e5270918ed575aa9b342c37772ee44d..d2c3fd178dbe16cf396f3f9b62368e1ee9f4c633 100644 (file)
@@ -1717,10 +1717,9 @@ void ieee80211_remove_interfaces(struct ieee80211_local *local)
 }
 
 static int netdev_notify(struct notifier_block *nb,
-                        unsigned long state,
-                        void *ndev)
+                        unsigned long state, void *ptr)
 {
-       struct net_device *dev = ndev;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct ieee80211_sub_if_data *sdata;
 
        if (state != NETDEV_CHANGENAME)
index 5b142fb164801bee9ab126d00fa3e485cdf96c60..7c3ed429789e579759825b57e21f307b0a7dbe3a 100644 (file)
@@ -1487,9 +1487,9 @@ ip_vs_forget_dev(struct ip_vs_dest *dest, struct net_device *dev)
  * Currently only NETDEV_DOWN is handled to release refs to cached dsts
  */
 static int ip_vs_dst_event(struct notifier_block *this, unsigned long event,
-                           void *ptr)
+                          void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net *net = dev_net(dev);
        struct netns_ipvs *ipvs = net_ipvs(net);
        struct ip_vs_service *svc;
index 4e27fa035814ab8a571268b3a9e4dd8b0cd7bce4..0f2ac8f2e7b76f504a991aab606f76f9ce7a773a 100644 (file)
@@ -800,7 +800,7 @@ static int
 nfqnl_rcv_dev_event(struct notifier_block *this,
                    unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        /* Drop any packets associated with the downed device */
        if (event == NETDEV_DOWN)
index bd93e51d30acc4eded7e5e4da0898e0838dd7c43..292934d234822a4a0b0088e030b316de05eee9bc 100644 (file)
@@ -200,7 +200,7 @@ tee_tg6(struct sk_buff *skb, const struct xt_action_param *par)
 static int tee_netdev_event(struct notifier_block *this, unsigned long event,
                            void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct xt_tee_priv *priv;
 
        priv = container_of(this, struct xt_tee_priv, notifier);
index 8a6c6ea466d874dd34afd2013bef4f777a47db42..af3531926ee0c0339c6cc73725c50a1d7ec2a18d 100644 (file)
@@ -708,7 +708,7 @@ unlhsh_remove_return:
  * netlbl_unlhsh_netdev_handler - Network device notification handler
  * @this: notifier block
  * @event: the event
- * @ptr: the network device (cast to void)
+ * @ptr: the netdevice notifier info (cast to void)
  *
  * Description:
  * Handle network device events, although at present all we care about is a
@@ -717,10 +717,9 @@ unlhsh_remove_return:
  *
  */
 static int netlbl_unlhsh_netdev_handler(struct notifier_block *this,
-                                       unsigned long event,
-                                       void *ptr)
+                                       unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct netlbl_unlhsh_iface *iface = NULL;
 
        if (!net_eq(dev_net(dev), &init_net))
index ec0c80fde69f8e23f205d8cb17616c1486e9ce01..698814bfa7adfd4a58e9ec13f24eeb341ea86e08 100644 (file)
@@ -117,7 +117,7 @@ static void nr_kill_by_device(struct net_device *dev)
  */
 static int nr_device_event(struct notifier_block *this, unsigned long event, void *ptr)
 {
-       struct net_device *dev = (struct net_device *)ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (!net_eq(dev_net(dev), &init_net))
                return NOTIFY_DONE;
index ef4feec6cd845e67903706f448ccc5d1a8f96556..c3235675f35997169ad4961722344537005a8f6e 100644 (file)
@@ -78,7 +78,7 @@ static int dp_device_event(struct notifier_block *unused, unsigned long event,
                           void *ptr)
 {
        struct ovs_net *ovs_net;
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct vport *vport = NULL;
 
        if (!ovs_is_internal_dev(dev))
index 8ec1bca7f85908c22534eb2023fef135859997c3..79fe63246b27acf7a4a026cb185f28f65ffec6c0 100644 (file)
@@ -3331,10 +3331,11 @@ static int packet_getsockopt(struct socket *sock, int level, int optname,
 }
 
 
-static int packet_notifier(struct notifier_block *this, unsigned long msg, void *data)
+static int packet_notifier(struct notifier_block *this,
+                          unsigned long msg, void *ptr)
 {
        struct sock *sk;
-       struct net_device *dev = data;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct net *net = dev_net(dev);
 
        rcu_read_lock();
index 45a7df6575ded371ef75fc11fc41a2b48371e51e..56a6146ac94bd331502294244ee2daa637f2054b 100644 (file)
@@ -292,9 +292,9 @@ static void phonet_route_autodel(struct net_device *dev)
 
 /* notify Phonet of device events */
 static int phonet_device_notify(struct notifier_block *me, unsigned long what,
-                               void *arg)
+                               void *ptr)
 {
-       struct net_device *dev = arg;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        switch (what) {
        case NETDEV_REGISTER:
index 9c834745159786e5e1d4338f51860be00943a0fd..e98fcfbe6007919d6c114708cde848a649bb2e4e 100644 (file)
@@ -202,10 +202,10 @@ static void rose_kill_by_device(struct net_device *dev)
 /*
  *     Handle device status changes.
  */
-static int rose_device_event(struct notifier_block *this, unsigned long event,
-       void *ptr)
+static int rose_device_event(struct notifier_block *this,
+                            unsigned long event, void *ptr)
 {
-       struct net_device *dev = (struct net_device *)ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (!net_eq(dev_net(dev), &init_net))
                return NOTIFY_DONE;
index 5d676edc22a66010ee93eea8b4663a45f60b4c75..977c10e0631b6dfe4ead45af617c0ad93c4a0759 100644 (file)
@@ -243,7 +243,7 @@ nla_put_failure:
 static int mirred_device_event(struct notifier_block *unused,
                               unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct tcf_mirred *m;
 
        if (event == NETDEV_UNREGISTER)
index 120a676a3360173311a7acb0a6499f0db921d5d9..fc60bea631691896380e94b68fb76c9454ddfa15 100644 (file)
@@ -251,9 +251,9 @@ static void disable_bearer(struct tipc_bearer *tb_ptr)
  * specified device.
  */
 static int recv_notification(struct notifier_block *nb, unsigned long evt,
-                            void *dv)
+                            void *ptr)
 {
-       struct net_device *dev = (struct net_device *)dv;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct eth_bearer *eb_ptr = &eth_bearers[0];
        struct eth_bearer *stop = &eth_bearers[MAX_ETH_BEARERS];
 
index 2a2864c25e15c6d9282357c3685008c67a73197a..baa9df4327d955472ae04d464c8958af4bae2356 100644 (file)
@@ -244,9 +244,9 @@ static void disable_bearer(struct tipc_bearer *tb_ptr)
  * specified device.
  */
 static int recv_notification(struct notifier_block *nb, unsigned long evt,
-                            void *dv)
+                            void *ptr)
 {
-       struct net_device *dev = (struct net_device *)dv;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct ib_bearer *ib_ptr = &ib_bearers[0];
        struct ib_bearer *stop = &ib_bearers[MAX_IB_BEARERS];
 
index 73405e00c800fd62ff703c9c030e31da70c69858..01e41191f1bf7f59c502f4c2499ad71304e6e4e9 100644 (file)
@@ -886,10 +886,9 @@ void cfg80211_leave(struct cfg80211_registered_device *rdev,
 }
 
 static int cfg80211_netdev_notifier_call(struct notifier_block *nb,
-                                        unsigned long state,
-                                        void *ndev)
+                                        unsigned long state, void *ptr)
 {
-       struct net_device *dev = ndev;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct wireless_dev *wdev = dev->ieee80211_ptr;
        struct cfg80211_registered_device *rdev;
        int ret;
index 37ca9694aabea14efd6308b59ced2e153ac30ae5..1d964e23853f22881151a6c113b813eb431b8d9c 100644 (file)
@@ -224,7 +224,7 @@ static void x25_kill_by_device(struct net_device *dev)
 static int x25_device_event(struct notifier_block *this, unsigned long event,
                            void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
        struct x25_neigh *nb;
 
        if (!net_eq(dev_net(dev), &init_net))
index 23cea0f74336c72b332e909994e242d216e5e2ae..536ccc95de89ff6aad96ea07a2e3fcf0498f342d 100644 (file)
@@ -2784,7 +2784,7 @@ static void __net_init xfrm_dst_ops_init(struct net *net)
 
 static int xfrm_dev_event(struct notifier_block *this, unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        switch (event) {
        case NETDEV_DOWN:
index 47a49d1a6f6adf7b60873fcfb1249b1ee023f5b9..694e9e43855f15862227e6caf726189deec5f0fc 100644 (file)
@@ -264,7 +264,7 @@ static int sel_netif_avc_callback(u32 event)
 static int sel_netif_netdev_notifier_handler(struct notifier_block *this,
                                             unsigned long event, void *ptr)
 {
-       struct net_device *dev = ptr;
+       struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 
        if (dev_net(dev) != &init_net)
                return NOTIFY_DONE;