Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

HID: hid-sensor-hub: Return error for hid_set_field() failure

In the function sensor_hub_set_feature(), return error when hid_set_field()
fails.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>

authored by

Srinivas Pandruvada and committed by
Jiri Kosina
edb03203 b45ef5db

+9 -4
+9 -4
drivers/hid/hid-sensor-hub.c
··· 209 209 buffer_size = buffer_size / sizeof(__s32); 210 210 if (buffer_size) { 211 211 for (i = 0; i < buffer_size; ++i) { 212 - hid_set_field(report->field[field_index], i, 213 - (__force __s32)cpu_to_le32(*buf32)); 212 + ret = hid_set_field(report->field[field_index], i, 213 + (__force __s32)cpu_to_le32(*buf32)); 214 + if (ret) 215 + goto done_proc; 216 + 214 217 ++buf32; 215 218 } 216 219 } 217 220 if (remaining_bytes) { 218 221 value = 0; 219 222 memcpy(&value, (u8 *)buf32, remaining_bytes); 220 - hid_set_field(report->field[field_index], i, 221 - (__force __s32)cpu_to_le32(value)); 223 + ret = hid_set_field(report->field[field_index], i, 224 + (__force __s32)cpu_to_le32(value)); 225 + if (ret) 226 + goto done_proc; 222 227 } 223 228 hid_hw_request(hsdev->hdev, report, HID_REQ_SET_REPORT); 224 229 hid_hw_wait(hsdev->hdev);