On Thu, 27 Oct 2016, Srinivas Pandruvada wrote: > When report count is more than one and report size is not 4 bytes, then we > need some packing into result buffer from the caller of function > sensor_hub_get_feature. > By default the value extracted from a field is 4 bytes from hid core > (using hid_hw_request(hsdev->hdev, report, HID_REQ_GET_REPORT)), even > if report size if less than 4 byte. So when we copy data to user buffer in > sensor_hub_get_feature, we need to only copy report size bytes even > when report count is more than 1. This is > not an issue for most of the sensor hub fields as report count will be 1 > where we already copy only report size bytes, but some string fields > like description, it is a problem as the report count will be more than 1. > For example: > Field(6) > Physical(Sensor.OtherCustom) > Application(Sensor.Sensor) > Usage(11) > Sensor.0306 > Sensor.0306 > Sensor.0306 > Sensor.0306 > Sensor.0306 > Sensor.0306 > Sensor.0306 > Sensor.0306 > Sensor.0306 > Sensor.0306 > Sensor.0306 > Report Size(16) > Report Count(11) > > Here since the report size is 2 bytes, we will have 2 additional bytes of > 0s copied into user buffer, if we directly copy to user buffer from > report->field[]->value > > This change will copy report size bytes into the buffer of caller for each > usage report->field[]->value. So for example without this change, the > data displayed for a custom sensor field "sensor-model": > > 76 00 101 00 110 00 111 00 118 00 111 > (truncated to report count of 11) > > With change > > 76 101 110 111 118 111 32 89 111 103 97 > ("Lenovo Yoga" in ASCII ) > > Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx> Applied for 4.9-rc. Thanks, -- Jiri Kosina SUSE Labs -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html