diff options
author | Heiner Kallweit <hkallweit1@gmail.com> | 2020-05-23 18:40:25 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-05-24 02:57:00 +0300 |
commit | 316107119f473e764cf5e50437333c8b83bec0da (patch) | |
tree | b6039ce7e2bd1dd3d66e31f73641ef96221e8ce7 /net | |
parent | c0096a28588d5a72fa290a74593cf9737c0b1cfb (diff) | |
download | linux-316107119f473e764cf5e50437333c8b83bec0da.tar.xz |
ethtool: propagate get_coalesce return value
get_coalesce returns 0 or ERRNO, but the return value isn't checked.
The returned coalesce data may be invalid if an ERRNO is set,
therefore better check and propagate the return value.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ethtool/ioctl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/ethtool/ioctl.c b/net/ethtool/ioctl.c index 31e0b4e88a9d..b5df90c981c2 100644 --- a/net/ethtool/ioctl.c +++ b/net/ethtool/ioctl.c @@ -1510,11 +1510,14 @@ static noinline_for_stack int ethtool_get_coalesce(struct net_device *dev, void __user *useraddr) { struct ethtool_coalesce coalesce = { .cmd = ETHTOOL_GCOALESCE }; + int ret; if (!dev->ethtool_ops->get_coalesce) return -EOPNOTSUPP; - dev->ethtool_ops->get_coalesce(dev, &coalesce); + ret = dev->ethtool_ops->get_coalesce(dev, &coalesce); + if (ret) + return ret; if (copy_to_user(useraddr, &coalesce, sizeof(coalesce))) return -EFAULT; |