|
@@ -621,11 +621,10 @@ static int netconsole_netdev_event(struct notifier_block *this,
|
|
|
bool stopped = false;
|
|
|
|
|
|
if (!(event == NETDEV_CHANGENAME || event == NETDEV_UNREGISTER ||
|
|
|
- event == NETDEV_BONDING_DESLAVE || event == NETDEV_GOING_DOWN))
|
|
|
+ event == NETDEV_BONDING_DESLAVE || event == NETDEV_JOIN))
|
|
|
goto done;
|
|
|
|
|
|
spin_lock_irqsave(&target_list_lock, flags);
|
|
|
-restart:
|
|
|
list_for_each_entry(nt, &target_list, list) {
|
|
|
netconsole_target_get(nt);
|
|
|
if (nt->np.dev == dev) {
|
|
@@ -633,6 +632,8 @@ restart:
|
|
|
case NETDEV_CHANGENAME:
|
|
|
strlcpy(nt->np.dev_name, dev->name, IFNAMSIZ);
|
|
|
break;
|
|
|
+ case NETDEV_BONDING_DESLAVE:
|
|
|
+ case NETDEV_JOIN:
|
|
|
case NETDEV_UNREGISTER:
|
|
|
/*
|
|
|
* rtnl_lock already held
|
|
@@ -647,11 +648,7 @@ restart:
|
|
|
dev_put(nt->np.dev);
|
|
|
nt->np.dev = NULL;
|
|
|
netconsole_target_put(nt);
|
|
|
- goto restart;
|
|
|
}
|
|
|
- /* Fall through */
|
|
|
- case NETDEV_GOING_DOWN:
|
|
|
- case NETDEV_BONDING_DESLAVE:
|
|
|
nt->enabled = 0;
|
|
|
stopped = true;
|
|
|
break;
|
|
@@ -660,10 +657,21 @@ restart:
|
|
|
netconsole_target_put(nt);
|
|
|
}
|
|
|
spin_unlock_irqrestore(&target_list_lock, flags);
|
|
|
- if (stopped && (event == NETDEV_UNREGISTER || event == NETDEV_BONDING_DESLAVE))
|
|
|
+ if (stopped) {
|
|
|
printk(KERN_INFO "netconsole: network logging stopped on "
|
|
|
- "interface %s as it %s\n", dev->name,
|
|
|
- event == NETDEV_UNREGISTER ? "unregistered" : "released slaves");
|
|
|
+ "interface %s as it ", dev->name);
|
|
|
+ switch (event) {
|
|
|
+ case NETDEV_UNREGISTER:
|
|
|
+ printk(KERN_CONT "unregistered\n");
|
|
|
+ break;
|
|
|
+ case NETDEV_BONDING_DESLAVE:
|
|
|
+ printk(KERN_CONT "released slaves\n");
|
|
|
+ break;
|
|
|
+ case NETDEV_JOIN:
|
|
|
+ printk(KERN_CONT "is joining a master device\n");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
done:
|
|
|
return NOTIFY_DONE;
|