File tree Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Expand file tree Collapse file tree 1 file changed +15
-0
lines changed Original file line number Diff line number Diff line change @@ -5219,6 +5219,20 @@ struct net_device *netdev_master_upper_dev_get(struct net_device *dev)
5219
5219
}
5220
5220
EXPORT_SYMBOL (netdev_master_upper_dev_get );
5221
5221
5222
+ /**
5223
+ * netdev_has_any_lower_dev - Check if device is linked to some device
5224
+ * @dev: device
5225
+ *
5226
+ * Find out if a device is linked to a lower device and return true in case
5227
+ * it is. The caller must hold the RTNL lock.
5228
+ */
5229
+ static bool netdev_has_any_lower_dev (struct net_device * dev )
5230
+ {
5231
+ ASSERT_RTNL ();
5232
+
5233
+ return !list_empty (& dev -> adj_list .lower );
5234
+ }
5235
+
5222
5236
void * netdev_adjacent_get_private (struct list_head * adj_list )
5223
5237
{
5224
5238
struct netdev_adjacent * adj ;
@@ -6616,6 +6630,7 @@ static void rollback_registered_many(struct list_head *head)
6616
6630
6617
6631
/* Notifier chain MUST detach us all upper devices. */
6618
6632
WARN_ON (netdev_has_any_upper_dev (dev ));
6633
+ WARN_ON (netdev_has_any_lower_dev (dev ));
6619
6634
6620
6635
/* Remove entries from kobject tree */
6621
6636
netdev_unregister_kobject (dev );
You can’t perform that action at this time.
0 commit comments