Public bug reported:

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

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

-- 
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:
  New

Bug description:
  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

Reply via email to