[PATCH v2] HID: sony: 4.10 fixes

STALE3451d

4 messages, 3 authors, 2017-03-06 · open the first message on its own page

[PATCH v2] HID: sony: 4.10 fixes

From: Roderick Colenbrander <hidden>
Date: 2017-02-25 00:20:42

From: Roderick Colenbrander <roderick.colenbrander@sony.com>

Hi,

This is an updated version of the fix taking Jiri's feedback into
account.

During testing of patches we are currently working on, we noticed
an input device cleanup issue when connecting a single DS4 using
Bluetooth and USB. This issue leads to memory leaks and in some
conditions likely a crash, so we recommend adding the attached
patch. Long-term we probably want to do 'sony_add' checks earlier
on within sony_input_configured as well to prevent any transient
devices from happening in such situation in the first place, but
this patch at least fixes the cleanup.

Thanks,
Roderick

Roderick Colenbrander (1):
  HID: sony: Fix input device leak when connecting a DS4 twice using
    USB/BT

 drivers/hid/hid-sony.c | 2 ++
 1 file changed, 2 insertions(+)

-- 
2.9.3

[PATCH v2] HID: sony: Fix input device leak when connecting a DS4 twice using USB/BT

From: Roderick Colenbrander <hidden>
Date: 2017-02-25 00:22:21

From: Roderick Colenbrander <roderick.colenbrander@sony.com>

When a user connects a DS4 twice using USB and BT, we reject the
second device connection after the setup work. We then perform
a cleanup, but during cleanup we are not removing the touchpad
device. This leads to leakage of an input device, which we would
never remove. It can likely result into a kernel oops as well
when the touchpad evdev node is accessed and the underlaying HID
device has been removed from the system.

Fixes: ac797b95f532 ("HID: sony: Make the DS4 touchpad a separate device")
Signed-off-by: Roderick Colenbrander <roderick.colenbrander@sony.com>
---
 drivers/hid/hid-sony.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
index f405b07..740996f 100644
--- a/drivers/hid/hid-sony.c
+++ b/drivers/hid/hid-sony.c
@@ -2632,6 +2632,8 @@ static int sony_input_configured(struct hid_device *hdev,
 		sony_leds_remove(sc);
 	if (sc->quirks & SONY_BATTERY_SUPPORT)
 		sony_battery_remove(sc);
+	if (sc->touchpad)
+		sony_unregister_touchpad(sc);
 	sony_cancel_work_sync(sc);
 	kfree(sc->output_report_dmabuf);
 	sony_remove_dev_list(sc);
-- 
2.9.3

Re: [PATCH v2] HID: sony: Fix input device leak when connecting a DS4 twice using USB/BT

From: Benjamin Tissoires <hidden>
Date: 2017-03-01 17:19:04

On Feb 24 2017 or thereabouts, Roderick Colenbrander wrote:
From: Roderick Colenbrander <roderick.colenbrander@sony.com>

When a user connects a DS4 twice using USB and BT, we reject the
second device connection after the setup work. We then perform
a cleanup, but during cleanup we are not removing the touchpad
device. This leads to leakage of an input device, which we would
never remove. It can likely result into a kernel oops as well
when the touchpad evdev node is accessed and the underlaying HID
device has been removed from the system.

Fixes: ac797b95f532 ("HID: sony: Make the DS4 touchpad a separate device")
Signed-off-by: Roderick Colenbrander <roderick.colenbrander@sony.com>
---
Looks good to me:
Reviewed-by: Benjamin Tissoires <redacted>
quoted hunk
 drivers/hid/hid-sony.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
index f405b07..740996f 100644
--- a/drivers/hid/hid-sony.c
+++ b/drivers/hid/hid-sony.c
@@ -2632,6 +2632,8 @@ static int sony_input_configured(struct hid_device *hdev,
 		sony_leds_remove(sc);
 	if (sc->quirks & SONY_BATTERY_SUPPORT)
 		sony_battery_remove(sc);
+	if (sc->touchpad)
+		sony_unregister_touchpad(sc);
 	sony_cancel_work_sync(sc);
 	kfree(sc->output_report_dmabuf);
 	sony_remove_dev_list(sc);
-- 
2.9.3

Re: [PATCH v2] HID: sony: Fix input device leak when connecting a DS4 twice using USB/BT

From: Jiri Kosina <jikos@kernel.org>
Date: 2017-03-06 15:57:17

On Fri, 24 Feb 2017, Roderick Colenbrander wrote:
From: Roderick Colenbrander <roderick.colenbrander@sony.com>

When a user connects a DS4 twice using USB and BT, we reject the
second device connection after the setup work. We then perform
a cleanup, but during cleanup we are not removing the touchpad
device. This leads to leakage of an input device, which we would
never remove. It can likely result into a kernel oops as well
when the touchpad evdev node is accessed and the underlaying HID
device has been removed from the system.

Fixes: ac797b95f532 ("HID: sony: Make the DS4 touchpad a separate device")
Signed-off-by: Roderick Colenbrander <roderick.colenbrander@sony.com>
I've added -stable anotation and applied to for-4.11/upstream-fixes. 
Thanks,

-- 
Jiri Kosina
SUSE Labs
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help