mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 10:45:49 +00:00
hwmon: (dell-smm) Simplify ioctl handler
The second switch-case has no real purpose: - for I8K_BIOS_VERSION, val does not represent a return value, making the check for error values unnecessary. - for I8K_MACHINE_ID, val remains zero, so the error check is unnecessary too. Remove the switch-case and move the calls to copy_to_user() into the first switch-case for I8K_BIOS_VERSION/_MACHINE_ID. Omit buff[] since data->bios_machineid already contains the string with the necessary zero padding through devm_kzalloc(). Tested on a Dell Inspiron 3505. Signed-off-by: Armin Wolf <W_Armin@gmx.de> Reviewed-by: Pali Rohár <pali@kernel.org> Link: https://lore.kernel.org/r/20211211155422.16830-2-W_Armin@gmx.de Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
9c6d555187
commit
0240538774
@ -454,7 +454,6 @@ i8k_ioctl_unlocked(struct file *fp, struct dell_smm_data *data, unsigned int cmd
|
||||
{
|
||||
int val = 0;
|
||||
int speed, err;
|
||||
unsigned char buff[16];
|
||||
int __user *argp = (int __user *)arg;
|
||||
|
||||
if (!argp)
|
||||
@ -468,15 +467,19 @@ i8k_ioctl_unlocked(struct file *fp, struct dell_smm_data *data, unsigned int cmd
|
||||
|
||||
val = (data->bios_version[0] << 16) |
|
||||
(data->bios_version[1] << 8) | data->bios_version[2];
|
||||
break;
|
||||
|
||||
if (copy_to_user(argp, &val, sizeof(val)))
|
||||
return -EFAULT;
|
||||
|
||||
return 0;
|
||||
case I8K_MACHINE_ID:
|
||||
if (restricted && !capable(CAP_SYS_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
strscpy_pad(buff, data->bios_machineid, sizeof(buff));
|
||||
break;
|
||||
if (copy_to_user(argp, data->bios_machineid, sizeof(data->bios_machineid)))
|
||||
return -EFAULT;
|
||||
|
||||
return 0;
|
||||
case I8K_FN_STATUS:
|
||||
val = i8k_get_fn_status();
|
||||
break;
|
||||
@ -527,23 +530,8 @@ i8k_ioctl_unlocked(struct file *fp, struct dell_smm_data *data, unsigned int cmd
|
||||
if (val < 0)
|
||||
return val;
|
||||
|
||||
switch (cmd) {
|
||||
case I8K_BIOS_VERSION:
|
||||
if (copy_to_user(argp, &val, 4))
|
||||
return -EFAULT;
|
||||
|
||||
break;
|
||||
case I8K_MACHINE_ID:
|
||||
if (copy_to_user(argp, buff, 16))
|
||||
return -EFAULT;
|
||||
|
||||
break;
|
||||
default:
|
||||
if (copy_to_user(argp, &val, sizeof(int)))
|
||||
return -EFAULT;
|
||||
|
||||
break;
|
||||
}
|
||||
if (copy_to_user(argp, &val, sizeof(int)))
|
||||
return -EFAULT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user