OSDN Git Service

can: af_can: can_pernet_exit(): no need to iterate over and cleanup registered CAN...
authorMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 8 Oct 2018 07:02:37 +0000 (09:02 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Wed, 4 Sep 2019 11:29:14 +0000 (13:29 +0200)
The networking core takes care and unregisters every network device in
a namespace before calling the can_pernet_exit() hook. This patch
removes the unneeded cleanup.

Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Suggested-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
net/can/af_can.c

index 28ea802..d65b190 100644 (file)
@@ -866,27 +866,12 @@ static int can_pernet_init(struct net *net)
 
 static void can_pernet_exit(struct net *net)
 {
-       struct net_device *dev;
-
        if (IS_ENABLED(CONFIG_PROC_FS)) {
                can_remove_proc(net);
                if (stats_timer)
                        del_timer_sync(&net->can.stattimer);
        }
 
-       /* remove created dev_rcv_lists from still registered CAN devices */
-       rcu_read_lock();
-       for_each_netdev_rcu(net, dev) {
-               if (dev->type == ARPHRD_CAN && dev->ml_priv) {
-                       struct can_dev_rcv_lists *dev_rcv_lists = dev->ml_priv;
-
-                       BUG_ON(dev_rcv_lists->entries);
-                       kfree(dev_rcv_lists);
-                       dev->ml_priv = NULL;
-               }
-       }
-       rcu_read_unlock();
-
        kfree(net->can.rx_alldev_list);
        kfree(net->can.pkg_stats);
        kfree(net->can.rcv_lists_stats);