| From d313876925f3e7a480a02773fd333bcab9202d5e Mon Sep 17 00:00:00 2001 |
| From: Carlo Caione <carlo@endlessm.com> |
| Date: Wed, 19 Apr 2017 22:36:39 +0200 |
| Subject: platform/x86: hp-wmi: Do not shadow error values |
| |
| From: Carlo Caione <carlo@endlessm.com> |
| |
| commit d313876925f3e7a480a02773fd333bcab9202d5e upstream. |
| |
| All the helper functions (i.e. hp_wmi_dock_state, hp_wmi_tablet_state, |
| ...) using hp_wmi_perform_query to perform an HP WMI query shadow the |
| returned value in case of error. |
| |
| We return -EINVAL only when the HP WMI query returns a positive value |
| (the specific error code) to not mix this up with the actual value |
| returned by the helper function. |
| |
| Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
| Signed-off-by: Carlo Caione <carlo@endlessm.com> |
| Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org> |
| Cc: Philip MΓΌller <philm@manjaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/platform/x86/hp-wmi.c | 20 ++++++++++---------- |
| 1 file changed, 10 insertions(+), 10 deletions(-) |
| |
| --- a/drivers/platform/x86/hp-wmi.c |
| +++ b/drivers/platform/x86/hp-wmi.c |
| @@ -248,7 +248,7 @@ static int hp_wmi_display_state(void) |
| int ret = hp_wmi_perform_query(HPWMI_DISPLAY_QUERY, 0, &state, |
| sizeof(state), sizeof(state)); |
| if (ret) |
| - return -EINVAL; |
| + return ret < 0 ? ret : -EINVAL; |
| return state; |
| } |
| |
| @@ -258,7 +258,7 @@ static int hp_wmi_hddtemp_state(void) |
| int ret = hp_wmi_perform_query(HPWMI_HDDTEMP_QUERY, 0, &state, |
| sizeof(state), sizeof(state)); |
| if (ret) |
| - return -EINVAL; |
| + return ret < 0 ? ret : -EINVAL; |
| return state; |
| } |
| |
| @@ -268,7 +268,7 @@ static int hp_wmi_als_state(void) |
| int ret = hp_wmi_perform_query(HPWMI_ALS_QUERY, 0, &state, |
| sizeof(state), sizeof(state)); |
| if (ret) |
| - return -EINVAL; |
| + return ret < 0 ? ret : -EINVAL; |
| return state; |
| } |
| |
| @@ -279,7 +279,7 @@ static int hp_wmi_dock_state(void) |
| sizeof(state), sizeof(state)); |
| |
| if (ret) |
| - return -EINVAL; |
| + return ret < 0 ? ret : -EINVAL; |
| |
| return state & 0x1; |
| } |
| @@ -290,7 +290,7 @@ static int hp_wmi_tablet_state(void) |
| int ret = hp_wmi_perform_query(HPWMI_HARDWARE_QUERY, 0, &state, |
| sizeof(state), sizeof(state)); |
| if (ret) |
| - return -EINVAL; |
| + return ret < 0 ? ret : -EINVAL; |
| |
| return (state & 0x4) ? 1 : 0; |
| } |
| @@ -323,7 +323,7 @@ static int __init hp_wmi_enable_hotkeys( |
| int ret = hp_wmi_perform_query(HPWMI_BIOS_QUERY, 1, &value, |
| sizeof(value), 0); |
| if (ret) |
| - return -EINVAL; |
| + return ret < 0 ? ret : -EINVAL; |
| return 0; |
| } |
| |
| @@ -336,7 +336,7 @@ static int hp_wmi_set_block(void *data, |
| ret = hp_wmi_perform_query(HPWMI_WIRELESS_QUERY, 1, |
| &query, sizeof(query), 0); |
| if (ret) |
| - return -EINVAL; |
| + return ret < 0 ? ret : -EINVAL; |
| return 0; |
| } |
| |
| @@ -428,7 +428,7 @@ static int hp_wmi_post_code_state(void) |
| int ret = hp_wmi_perform_query(HPWMI_POSTCODEERROR_QUERY, 0, &state, |
| sizeof(state), sizeof(state)); |
| if (ret) |
| - return -EINVAL; |
| + return ret < 0 ? ret : -EINVAL; |
| return state; |
| } |
| |
| @@ -494,7 +494,7 @@ static ssize_t set_als(struct device *de |
| int ret = hp_wmi_perform_query(HPWMI_ALS_QUERY, 1, &tmp, |
| sizeof(tmp), sizeof(tmp)); |
| if (ret) |
| - return -EINVAL; |
| + return ret < 0 ? ret : -EINVAL; |
| |
| return count; |
| } |
| @@ -515,7 +515,7 @@ static ssize_t set_postcode(struct devic |
| ret = hp_wmi_perform_query(HPWMI_POSTCODEERROR_QUERY, 1, &tmp, |
| sizeof(tmp), sizeof(tmp)); |
| if (ret) |
| - return -EINVAL; |
| + return ret < 0 ? ret : -EINVAL; |
| |
| return count; |
| } |