elmcan_ldisc_ioctl(): Use elm->dev->name again
authornorly <ny-git@enpas.org>
Thu, 24 Jan 2019 02:44:04 +0000 (03:44 +0100)
committernorly <ny-git@enpas.org>
Wed, 30 Jan 2019 22:47:28 +0000 (23:47 +0100)
We now have proper locking, so dev->name is guaranteed to exist.

module/elmcan.c

index b3dc70c93f5dce79bb8536a4a7b5fae845ca4523..6ae52975fa2ff100a3520bdd7ff6cb6bec575d1a 100644 (file)
@@ -81,8 +81,6 @@ struct elmcan {
        struct tty_struct       *tty;
        struct net_device       *dev;
 
-       char                    ifname[IFNAMSIZ];
-
        /* Per-channel lock */
        spinlock_t              lock;
 
@@ -709,18 +707,6 @@ static void elm327_parse_rxbuf(struct elmcan *elm)
   * (takes elm->lock)                                          *
   ************************************************************************/
 
-static int elmcan_netdev_init(struct net_device *dev)
-{
-       struct elmcan *elm = netdev_priv(dev);
-
-       /* Copy the interface name here, so the SIOCGIFNAME case in
-        * elmcan_ldisc_ioctl() doesn't race against unregister_candev().
-        */
-       memcpy(elm->ifname, dev->name, IFNAMSIZ);
-
-       return 0;
-}
-
 /* Netdevice DOWN -> UP routine */
 static int elmcan_netdev_open(struct net_device *dev)
 {
@@ -828,7 +814,6 @@ static int elmcan_netdev_change_mtu(struct net_device *dev, int new_mtu)
 }
 
 static const struct net_device_ops elmcan_netdev_ops = {
-       .ndo_init       = elmcan_netdev_init,
        .ndo_open       = elmcan_netdev_open,
        .ndo_stop       = elmcan_netdev_close,
        .ndo_start_xmit = elmcan_netdev_start_xmit,
@@ -1138,8 +1123,8 @@ static int elmcan_ldisc_ioctl(struct tty_struct *tty, struct file *file,
 
        switch (cmd) {
        case SIOCGIFNAME:
-               tmp = strlen(elm->ifname) + 1;
-               if (copy_to_user((void __user *)arg, elm->ifname, tmp)) {
+               tmp = strlen(elm->dev->name) + 1;
+               if (copy_to_user((void __user *)arg, elm->dev->name, tmp)) {
                        put_elm(elm);
                        return -EFAULT;
                }