** Changed in: linux (Ubuntu Focal)
Status: In Progress => Fix Committed
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1935846
Title:
Sony Dualshock 4 usb dongle crashes the whole system
Status in linux package in Ubuntu:
Fix Released
Status in linux source package in Focal:
Fix Committed
Status in linux source package in Groovy:
Won't Fix
Bug description:
[Impact]
Sony Dualshock 4 controller crashes systems. This is the result of a
divide by zero when the driver processes requests from Steam and returns
invalid data. More details are in the patch description.
[Fix]
Check whether data is valid and retry up to 3 times if needed.
[Test Case]
Tested by the bug reporter of LP:1935846. No more crashes after applying
this patch.
[Where problems could occur]
None. The patch checks whether data is valid and retry 3 times before
return -EILSEQ if it still fails.
== Original descriptions ==
The hid-sony driver has custom DS4 connect/disconnect logic for the
DS4 dongle, which is a USB dongle acting as a proxy to Bluetooth
connected DS4.
The connect/disconnect logic works fine generally, however not in
conjunction with Steam. Steam implements its own DS4 driver using
hidraw. Both hid-sony and Steam are issuing their own HID requests
and are racing each other during DS4 dongle connect/disconnect
resulting in a kernel crash in hid-sony.
The problem is that upon a DS4 connect to the dongle, hid-sony kicks
of 'ds4_get_calibration_data' from within its dongle hotplug code.
The calibration code issues raw HID feature report for reportID 0x02.
When Steam is running, it issues a feature report for reportID 0x12
typically just prior to hid-sony requesting feature reportID 0x02.
The result is that 'ds4_get_calibration_data' receives the data Steam
requested as that's the HID report returing first. Currently this
results in it processing invalid data, which ultimately results in a
divide by zero upon a future 'dualshock4_parse_report'.
The solution for now is to check within 'ds4_get_calibration_data' to
check if we received data for the feature report we issued and if not
retry.
Please consider to add this patch to Ubuntu LTS kernels.
Commit:
https://github.com/torvalds/linux/commit/f5dc93b7875bcb8be77baa792cc9432aaf65365b
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1935846/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp