[PATCH] [HID] hid-sony: regression probing a SIXAXIS controller - wrong return value

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch fixes a regression introduced in bd28ce00. It occurs when
attaching a Sony SIXAXIS controller:

input: Sony PLAYSTATION(R)3 Controller as
/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/input/input9
sony 0003:054C:0268.0006: input,hiddev96,hidraw0: USB HID v1.11 Joystick
[Sony PLAYSTATION(R)3 Controller] on usb-0000:00:1d.0-1/input0
sony: probe of 0003:054C:0268.0006 failed with error 17

The reason for this nasty behavior is a wrong return value emitted by
sony_set_operational().

Carry on playing with your Christmas gifts,
Richard

Signed-off-by: Richard Nauber  <Richard.Nauber@xxxxxx>

---
diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
index 86e563b..e807d2f 100644
--- a/drivers/hid/hid-sony.c
+++ b/drivers/hid/hid-sony.c
@@ -65,12 +65,15 @@ static int sony_set_operational(struct hid_device *hdev)
                                 USB_RECIP_INTERFACE,
                                 (3 << 8) | 0xf2, ifnum, buf, 17,
                                 USB_CTRL_GET_TIMEOUT);
-       if (ret < 0)
-               dev_err(&hdev->dev, "can't set operational mode\n");

        kfree(buf);

-       return ret;
+       if (ret <= 0) {
+               dev_err(&hdev->dev, "can't set operational mode\n");
+               return (ret ? ret : -EIO );
+       }
+
+       return 0;
 }

 static int sony_probe(struct hid_device *hdev, const struct
hid_device_id *id)
--
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux