Bug 87991

Summary: hid-sony uses non-DMA-capable transfer buffer, fails
Product: Drivers Reporter: Hector Martin (marcan)
Component: Input DevicesAssignee: drivers_input-devices
Status: RESOLVED CODE_FIX    
Severity: normal CC: dmitry.torokhov
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 3.17.1 Subsystem:
Regression: No Bisected commit-id:

Description Hector Martin 2014-11-10 13:43:17 UTC
The kernel itself complains:

input: Sony PLAYSTATION(R)3 Controller as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2.2/1-1.2.2.4/1-1.2.2.4:1.0/0003:054C:0268.000A/input/input51
sony 0003:054C:0268.000A: input,hiddev0,hidraw3: USB HID v1.11 Joystick [Sony PLAYSTATION(R)3 Controller] on usb-0000:00:1a.0-1.2.2.4/input0
------------[ cut here ]------------
WARNING: CPU: 1 PID: 27497 at drivers/usb/core/hcd.c:1503 usb_hcd_map_urb_for_dma+0x588/0x5a0 [usbcore]()
transfer buffer not dma capable
<snip>
sony 0003:054C:0268.000A: failed to retrieve feature report 0xf2 with the Sixaxis MAC address
sony: probe of 0003:054C:0268.000A failed with error -11

Looks like the code just uses a stack-allocated buffer (from drivers/hid/hid-sony.c):
        __u8 buf[18];
<snip comment>
        ret = hid_hw_raw_request(sc->hdev, 0xf2, buf, sizeof(buf),
                HID_FEATURE_REPORT, HID_REQ_GET_REPORT);
Comment 1 Dmitry Torokhov 2018-01-10 19:36:41 UTC
This should be fixed now.