net: dsa: microchip: ptp: Fix error code in ksz_hwtstamp_set()
authorDan Carpenter <error27@gmail.com>
Wed, 18 Jan 2023 10:28:21 +0000 (13:28 +0300)
committerJakub Kicinski <kuba@kernel.org>
Fri, 20 Jan 2023 02:57:16 +0000 (18:57 -0800)
We want to return negative error codes here but the copy_to/from_user()
functions return the number of bytes remaining to be copied.

Fixes: c59e12a140fb ("net: dsa: microchip: ptp: Initial hardware time stamping support")
Signed-off-by: Dan Carpenter <error27@gmail.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Link: https://lore.kernel.org/r/Y8fJxSvbl7UNVHh/@kili
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/microchip/ksz_ptp.c

index a66a256f881420df412601a3c115794a2f67b988..4e22a695a64c3a9a4f6bbd458f29f5a09dbf3819 100644 (file)
@@ -416,9 +416,8 @@ int ksz_hwtstamp_set(struct dsa_switch *ds, int port, struct ifreq *ifr)
 
        prt = &dev->ports[port];
 
-       ret = copy_from_user(&config, ifr->ifr_data, sizeof(config));
-       if (ret)
-               return ret;
+       if (copy_from_user(&config, ifr->ifr_data, sizeof(config)))
+               return -EFAULT;
 
        ret = ksz_set_hwtstamp_config(dev, prt, &config);
        if (ret)
@@ -426,7 +425,10 @@ int ksz_hwtstamp_set(struct dsa_switch *ds, int port, struct ifreq *ifr)
 
        memcpy(&prt->tstamp_config, &config, sizeof(config));
 
-       return copy_to_user(ifr->ifr_data, &config, sizeof(config));
+       if (copy_to_user(ifr->ifr_data, &config, sizeof(config)))
+               return -EFAULT;
+
+       return 0;
 }
 
 static ktime_t ksz_tstamp_reconstruct(struct ksz_device *dev, ktime_t tstamp)