> +static int rmnet_unregister_real_device(struct net_device *real_dev)
> +{
> + struct rmnet_real_dev_info *rdinfo;
> + struct list_head *iter;
> +
> + ASSERT_RTNL();
> +
> + if (!rmnet_is_real_dev_registered(real_dev) ||
> + netdev_lower_get_next(real_dev, &iter))
> + return -EINVAL;
> +
> + rdinfo = __rmnet_get_real_dev_info(real_dev);
> + kfree(rdinfo);
> +
> + netdev_rx_handler_unregister(real_dev);
> +
> + /* release reference on real_dev */
> + dev_put(real_dev);
> +
> + netdev_info(real_dev, "Removed from rmnet\n");
I would probably turn all your netdev_info()s into netdev_dbg()s. You
seem to be spamming the kernel log quite a bit.
Andrew