** Also affects: linux (Ubuntu Focal) Importance: Undecided Status: New
** Also affects: linux (Ubuntu Groovy) Importance: Undecided Status: New ** Changed in: linux (Ubuntu Focal) Status: New => In Progress ** Changed in: linux (Ubuntu Groovy) Status: New => Won't Fix ** Changed in: linux (Ubuntu) Status: New => Fix Released -- 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: In Progress 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 : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp