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:
Родитель
1bb42aca7a
Коммит
4fb28379b3
|
@ -1285,6 +1285,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.
|
||||
*/
|
||||
msleep(50);
|
||||
|
||||
if (retval)
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1306,7 +1309,7 @@ static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
|
|||
buf[5] = 0x09;
|
||||
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,
|
||||
HID_REQ_SET_REPORT);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче