Loading net/core/ethtool.c +6 −14 Original line number Diff line number Diff line Loading @@ -2322,16 +2322,12 @@ static int ethtool_set_tunable(struct net_device *dev, void __user *useraddr) ret = ethtool_tunable_valid(&tuna); if (ret) return ret; data = kmalloc(tuna.len, GFP_USER); if (!data) return -ENOMEM; useraddr += sizeof(tuna); ret = -EFAULT; if (copy_from_user(data, useraddr, tuna.len)) goto out; data = memdup_user(useraddr, tuna.len); if (IS_ERR(data)) return PTR_ERR(data); ret = ops->set_tunable(dev, &tuna, data); out: kfree(data); return ret; } Loading Loading @@ -2507,18 +2503,14 @@ static int set_phy_tunable(struct net_device *dev, void __user *useraddr) ret = ethtool_phy_tunable_valid(&tuna); if (ret) return ret; data = kmalloc(tuna.len, GFP_USER); if (!data) return -ENOMEM; useraddr += sizeof(tuna); ret = -EFAULT; if (copy_from_user(data, useraddr, tuna.len)) goto out; data = memdup_user(useraddr, tuna.len); if (IS_ERR(data)) return PTR_ERR(data); mutex_lock(&phydev->lock); ret = phydev->drv->set_tunable(phydev, &tuna, data); mutex_unlock(&phydev->lock); out: kfree(data); return ret; } Loading Loading
net/core/ethtool.c +6 −14 Original line number Diff line number Diff line Loading @@ -2322,16 +2322,12 @@ static int ethtool_set_tunable(struct net_device *dev, void __user *useraddr) ret = ethtool_tunable_valid(&tuna); if (ret) return ret; data = kmalloc(tuna.len, GFP_USER); if (!data) return -ENOMEM; useraddr += sizeof(tuna); ret = -EFAULT; if (copy_from_user(data, useraddr, tuna.len)) goto out; data = memdup_user(useraddr, tuna.len); if (IS_ERR(data)) return PTR_ERR(data); ret = ops->set_tunable(dev, &tuna, data); out: kfree(data); return ret; } Loading Loading @@ -2507,18 +2503,14 @@ static int set_phy_tunable(struct net_device *dev, void __user *useraddr) ret = ethtool_phy_tunable_valid(&tuna); if (ret) return ret; data = kmalloc(tuna.len, GFP_USER); if (!data) return -ENOMEM; useraddr += sizeof(tuna); ret = -EFAULT; if (copy_from_user(data, useraddr, tuna.len)) goto out; data = memdup_user(useraddr, tuna.len); if (IS_ERR(data)) return PTR_ERR(data); mutex_lock(&phydev->lock); ret = phydev->drv->set_tunable(phydev, &tuna, data); mutex_unlock(&phydev->lock); out: kfree(data); return ret; } Loading