if (copy_to_user(useraddr, &cmd, sizeof(cmd)))
                return -EFAULT;
        useraddr += sizeof(cmd);
-       if (copy_to_user(useraddr, features, copy_size * sizeof(*features)))
+       if (copy_to_user(useraddr, features,
+                        array_size(copy_size, sizeof(*features))))
                return -EFAULT;
 
        return 0;
                goto out;
 
        useraddr += offsetof(struct ethtool_sset_info, data);
-       if (copy_to_user(useraddr, info_buf, idx * sizeof(u32)))
+       if (copy_to_user(useraddr, info_buf, array_size(idx, sizeof(u32))))
                goto out;
 
        ret = 0;
 {
        int i;
 
-       if (copy_from_user(indir, useraddr, size * sizeof(indir[0])))
+       if (copy_from_user(indir, useraddr, array_size(size, sizeof(indir[0]))))
                return -EFAULT;
 
        /* Validate ring indices */
        if (copy_to_user(useraddr, &test, sizeof(test)))
                goto out;
        useraddr += sizeof(test);
-       if (copy_to_user(useraddr, data, test.len * sizeof(u64)))
+       if (copy_to_user(useraddr, data, array_size(test.len, sizeof(u64))))
                goto out;
        ret = 0;
 
                goto out;
        useraddr += sizeof(gstrings);
        if (gstrings.len &&
-           copy_to_user(useraddr, data, gstrings.len * ETH_GSTRING_LEN))
+           copy_to_user(useraddr, data,
+                        array_size(gstrings.len, ETH_GSTRING_LEN)))
                goto out;
        ret = 0;