HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode()
[ Upstream commit6f20d32612] Presently, if a call to logi_dj_recv_send_report() fails, we do not learn about the error until after sending short HID_OUTPUT_REPORT with hid_hw_raw_request(). To handle this somewhat unlikely issue, return on error in logi_dj_recv_send_report() (minding ugly sleep workaround) and take into account the result of hid_hw_raw_request(). Found by Linux Verification Center (linuxtesting.org) with static analysis tool SVACE. Fixes:6a9ddc8978("HID: logitech-dj: enable notifications on connect/disconnect") Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru> Link: https://lore.kernel.org/r/20230613101635.77820-1-n.zhandarovich@fintech.ru Signed-off-by: Benjamin Tissoires <bentiss@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
bdb3cd9dff
commit
e38a6f1268
@@ -1217,6 +1217,9 @@ static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
|
|||||||
* 50 msec should gives enough time to the receiver to be ready.
|
* 50 msec should gives enough time to the receiver to be ready.
|
||||||
*/
|
*/
|
||||||
msleep(50);
|
msleep(50);
|
||||||
|
|
||||||
|
if (retval)
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1238,7 +1241,7 @@ static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
|
|||||||
buf[5] = 0x09;
|
buf[5] = 0x09;
|
||||||
buf[6] = 0x00;
|
buf[6] = 0x00;
|
||||||
|
|
||||||
hid_hw_raw_request(hdev, REPORT_ID_HIDPP_SHORT, buf,
|
retval = hid_hw_raw_request(hdev, REPORT_ID_HIDPP_SHORT, buf,
|
||||||
HIDPP_REPORT_SHORT_LENGTH, HID_OUTPUT_REPORT,
|
HIDPP_REPORT_SHORT_LENGTH, HID_OUTPUT_REPORT,
|
||||||
HID_REQ_SET_REPORT);
|
HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user