Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging: vt6656: sparse fixes ethtool_ioctl Use struct ifreq *

Replace useraddr with direct point to struct ifreq->ifr_data

sparse warnings
main_usb.c:1443:44: warning: cast removes address space of expression
main_usb.c:1454:37: warning: incorrect type in argument 2 (different address spaces)
main_usb.c:1454:37: expected void const [noderef] <asn:1>*from
main_usb.c:1454:37: got void *useraddr
main_usb.c:1462:34: warning: incorrect type in argument 1 (different address spaces)
main_usb.c:1462:34: expected void [noderef] <asn:1>*to
main_usb.c:1462:34: got void *useraddr

Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Malcolm Priestley and committed by
Greg Kroah-Hartman
86a362f1 d820fa95

+5 -5
+5 -5
drivers/staging/vt6656/main_usb.c
··· 219 219 static void device_init_diversity_timer(struct vnt_private *pDevice); 220 220 static int device_dma0_tx_80211(struct sk_buff *skb, struct net_device *dev); 221 221 222 - static int ethtool_ioctl(struct net_device *dev, void *useraddr); 222 + static int ethtool_ioctl(struct net_device *dev, struct ifreq *); 223 223 static void device_free_tx_bufs(struct vnt_private *pDevice); 224 224 static void device_free_rx_bufs(struct vnt_private *pDevice); 225 225 static void device_free_int_bufs(struct vnt_private *pDevice); ··· 1439 1439 break; 1440 1440 1441 1441 case SIOCETHTOOL: 1442 - return ethtool_ioctl(dev, (void *) rq->ifr_data); 1442 + return ethtool_ioctl(dev, rq); 1443 1443 1444 1444 } 1445 1445 1446 1446 return rc; 1447 1447 } 1448 1448 1449 - static int ethtool_ioctl(struct net_device *dev, void *useraddr) 1449 + static int ethtool_ioctl(struct net_device *dev, struct ifreq *rq) 1450 1450 { 1451 1451 u32 ethcmd; 1452 1452 1453 - if (copy_from_user(&ethcmd, useraddr, sizeof(ethcmd))) 1453 + if (copy_from_user(&ethcmd, rq->ifr_data, sizeof(ethcmd))) 1454 1454 return -EFAULT; 1455 1455 1456 1456 switch (ethcmd) { ··· 1458 1458 struct ethtool_drvinfo info = {ETHTOOL_GDRVINFO}; 1459 1459 strncpy(info.driver, DEVICE_NAME, sizeof(info.driver)-1); 1460 1460 strncpy(info.version, DEVICE_VERSION, sizeof(info.version)-1); 1461 - if (copy_to_user(useraddr, &info, sizeof(info))) 1461 + if (copy_to_user(rq->ifr_data, &info, sizeof(info))) 1462 1462 return -EFAULT; 1463 1463 return 0; 1464 1464 }