patch-2_6_7-vs1_9_1_12
[linux-2.6.git] / drivers / net / starfire.c
index 9b47edb..0eb660a 100644 (file)
@@ -1997,7 +1997,7 @@ static void set_rx_mode(struct net_device *dev)
 }
 
 
-static int netdev_ethtool_ioctl(struct net_device *dev, void *useraddr)
+static int netdev_ethtool_ioctl(struct net_device *dev, void __user *useraddr)
 {
        struct ethtool_cmd ecmd;
        struct netdev_private *np = dev->priv;
@@ -2079,16 +2079,16 @@ static int netdev_ethtool_ioctl(struct net_device *dev, void *useraddr)
 static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
 {
        struct netdev_private *np = dev->priv;
-       struct mii_ioctl_data *data = (struct mii_ioctl_data *) & rq->ifr_data;
        int rc;
 
        if (!netif_running(dev))
                return -EINVAL;
 
        if (cmd == SIOCETHTOOL)
-               rc = netdev_ethtool_ioctl(dev, (void *) rq->ifr_data);
+               rc = netdev_ethtool_ioctl(dev, rq->ifr_data);
 
        else {
+               struct mii_ioctl_data *data = if_mii(rq);
                spin_lock_irq(&np->lock);
                rc = generic_mii_ioctl(&np->mii_if, data, cmd, NULL);
                spin_unlock_irq(&np->lock);