> +void rmnet_vnd_setup(struct net_device *rmnet_dev)
> +{
> + struct rmnet_priv *priv;
> +
> + /* Clear out private data */
> + priv = netdev_priv(rmnet_dev);
> + memset(priv, 0, sizeof(struct rmnet_priv));
Netdev private area is always zero on creation. See alloc_netdev().
> +struct rmnet_endpoint *rmnet_vnd_get_endpoint(struct net_device *rmnet_dev)
> +{
> + struct rmnet_priv *priv;
> +
> + if (!rmnet_dev)
> + return 0;
Do not confuse 0 with NULL. Did you run sparse?
> +
> + priv = netdev_priv(rmnet_dev);
> + if (!priv)
> + return 0;
netdev_priv() always returns a non-NULL value. The private area is just
a constant offset below the original network_device structure.