From 53f97fb4cac72e2939f3832816ebe2f10fc5144c Mon Sep 17 00:00:00 2001 From: Alexander Viro Date: Thu, 3 Jun 2004 10:38:18 -0700 Subject: [PATCH] [PATCH] sparse: ->ifr_data fixes b44.c: ->ioctl() is broken, since it uses &ifr->ifr_data instead of ifr->ifr_data itself. Surprise, surprise, copy_from_user() on that address doesn't do any good... baycom_epp.c: does get_user() of the first word of structure, then immediately does copy_from_user() on the entire thing and completely ignores the value read by get_user() (it uses the same value in copied structure instead). Bogus get_user() call removed. --- drivers/net/b44.c | 2 +- drivers/net/hamradio/baycom_epp.c | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/b44.c b/drivers/net/b44.c index d7f2142f8d6a2..531568949024a 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c @@ -1633,7 +1633,7 @@ static struct ethtool_ops b44_ethtool_ops = { static int b44_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) { - struct mii_ioctl_data __user *data = (struct mii_ioctl_data __user *)&ifr->ifr_data; + struct mii_ioctl_data __user *data = ifr->ifr_data; struct b44 *bp = netdev_priv(dev); int err; diff --git a/drivers/net/hamradio/baycom_epp.c b/drivers/net/hamradio/baycom_epp.c index d5b7fd96f36c0..d5b7db1bd2cae 100644 --- a/drivers/net/hamradio/baycom_epp.c +++ b/drivers/net/hamradio/baycom_epp.c @@ -1166,8 +1166,6 @@ static int baycom_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) bc = netdev_priv(dev); if (cmd != SIOCDEVPRIVATE) return -ENOIOCTLCMD; - if (get_user(cmd, (int *)ifr->ifr_data)) - return -EFAULT; if (copy_from_user(&hi, ifr->ifr_data, sizeof(hi))) return -EFAULT; -- 2.53.0