On Tue, 8 Jun 2021, Maximilian Luz wrote: > Getting a report (e.g. feature report) from a device requires us to send > a request indicating which report we want to retrieve and then waiting > for the corresponding response containing that report. We already > provide the response structure to the request call, but the request > isn't marked as a request that expects a response. Thus the request > returns before we receive the response and the response buffer indicates > a zero length response due to that. > > This essentially means that the get-report calls are broken and will > always indicate that a report of length zero has been read. > > Fix this by appropriately marking the request. > > Fixes: b05ff1002a5c ("HID: Add support for Surface Aggregator Module HID transport") > Signed-off-by: Maximilian Luz <luzmaximilian@xxxxxxxxx> > --- > drivers/hid/surface-hid/surface_hid.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/hid/surface-hid/surface_hid.c b/drivers/hid/surface-hid/surface_hid.c > index 3477b31611ae..a3a70e4f3f6c 100644 > --- a/drivers/hid/surface-hid/surface_hid.c > +++ b/drivers/hid/surface-hid/surface_hid.c > @@ -143,7 +143,7 @@ static int ssam_hid_get_raw_report(struct surface_hid_device *shid, u8 rprt_id, > rqst.target_id = shid->uid.target; > rqst.instance_id = shid->uid.instance; > rqst.command_id = SURFACE_HID_CID_GET_FEATURE_REPORT; > - rqst.flags = 0; > + rqst.flags = SSAM_REQUEST_HAS_RESPONSE; > rqst.length = sizeof(rprt_id); > rqst.payload = &rprt_id; Queued in for-5.13/upstream-fixes branch, thanks. -- Jiri Kosina SUSE Labs