From: "Derek J. Clark" <derekjohn.clark@gmail.com>
To: Jiri Kosina <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>
Cc: "Pierre-Loup A . Griffais" <pgriffais@valvesoftware.com>,
"Derek J . Clark" <derekjohn.clark@gmail.com>,
linux-input@vger.kernel.org, linux-kernel@vger.kernel.org,
kernel@lists.opengamingcollective.org
Subject: [PATCH v2 00/11] HID: hid-lenovo-go-s: Fix various bugs
Date: Fri, 16 Oct 2026 18:39:45 -0700 [thread overview]
Message-ID: <20261017013956.2440130-1-derekjohn.clark@gmail.com> (raw)
This series fixes various bugs in the hid-lenovo-go-s driver
Patch 1 fixes a dropped error on return from mcu_property_out().
Patch 2 creates a mechanism to ignore stale responses if they timed out
in the previous command.
Patch 3 fixes a deadlock if the device is removed while cfg_setup() is
running.
Patch 4 adds missing pm_ptr to the reset_resume function pointer.
Patch 5 adds a kobject_uevent notify during reset-resume to ensure the
os_mode return is caught by udev.
Patch 6 adds a suspend callback to cancel delayed work and re-queue the
cfg_setup if the device was suspended prior to or during the work.
Patch 7 moves attribute init to the end of cfg_setup, ensuring the
attributes can only be used once the MCU is ready.
Patch 8 reorganizes hid_gos_cfg and renames it to gos_cfg_drvdata in
preparation for later fixes.
Patch 9 moves the static led_classdev to become a member of the drvdata
struct.
Patch 10 moves drvdata from a static global to a device allocated
struct.
Patch 11 stops and closes the HID device when probe fails.
Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com>
---
v2:
- Patch 2: Only mark the ack as orphaned when no reply was consumed,
i.e. the wait timed out or was interrupted. An MCU error reply is
fully consumed and does not need draining.
- Patch 3: Re-take cfg_mutex in the remove path after stopping the
setup work; the commit body documents why the re-take is safe.
- Patch 6: Cancel instead of disable the delayed work on suspend so
the work can be rescheduled again on reset-resume.
- Patch 7: Bound the device query retry to 5 attempts at 50 ms. Register
the LED classdev manually and unregister it on failure and in the
remove path. The registered flags are set before the matching steps
and cleared on any failure, so a failed setup run can be retried.
- Patch 10: Fix stale work function name in the memory barrier
pairing comments.
- Add patch 11: Stop and close the HID device on probe failure.
v1: https://lore.kernel.org/linux-input/20260914225303.868569-1-derekjohn.clark@gmail.com/
Derek J. Clark (11):
HID: hid-lenovo-go-s: Return ret instead of 0 in mcu_property_out()
HID: hid-lenovo-go-s: Bound stale reply window before reusing
send_cmd_complete
HID: hid-lenovo-go-s: Prevent deadlock if device removed during setup
HID: hid-lenovo-go-s: Use pm_ptr for reset_resume callback
HID: hid-lenovo-go-s: Add kobject_uevent notify during reset-resume
HID: hid-lenovo-go-s: Add suspend function and gate access under bool.
HID: hid-lenovo-go-s: Move attribute init to after device query
HID: hid-lenovo-go-s: Reorganize and rename hid_gos_cfg
HID: hid-lenovo-go-s: Move static led_classdev_mc to drvdata struct
HID: hid-lenovo-go-s: Use devm_kzalloc for drvdata
HID: hid-lenovo-go-s: Stop and close device on probe failure
drivers/hid/hid-lenovo-go-s.c | 720 +++++++++++++++++++++++++---------
1 file changed, 526 insertions(+), 194 deletions(-)
--
2.55.0
next reply other threads:[~2026-10-17 1:40 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-17 1:39 Derek J. Clark [this message]
2026-10-17 1:39 ` [PATCH v2 01/11] HID: hid-lenovo-go-s: Return ret instead of 0 in mcu_property_out() Derek J. Clark
2026-10-17 1:39 ` [PATCH v2 02/11] HID: hid-lenovo-go-s: Bound stale reply window before reusing send_cmd_complete Derek J. Clark
2026-10-17 1:39 ` [PATCH v2 03/11] HID: hid-lenovo-go-s: Prevent deadlock if device removed during setup Derek J. Clark
2026-10-17 1:39 ` [PATCH v2 04/11] HID: hid-lenovo-go-s: Use pm_ptr for reset_resume callback Derek J. Clark
2026-10-17 1:39 ` [PATCH v2 05/11] HID: hid-lenovo-go-s: Add kobject_uevent notify during reset-resume Derek J. Clark
2026-10-17 1:39 ` [PATCH v2 06/11] HID: hid-lenovo-go-s: Add suspend function and gate access under bool Derek J. Clark
2026-10-17 2:03 ` sashiko-bot
2026-10-17 1:39 ` [PATCH v2 07/11] HID: hid-lenovo-go-s: Move attribute init to after device query Derek J. Clark
2026-10-17 2:07 ` sashiko-bot
2026-10-17 1:39 ` [PATCH v2 08/11] HID: hid-lenovo-go-s: Reorganize and rename hid_gos_cfg Derek J. Clark
2026-10-17 1:39 ` [PATCH v2 09/11] HID: hid-lenovo-go-s: Move static led_classdev_mc to drvdata struct Derek J. Clark
2026-10-17 2:14 ` sashiko-bot
2026-10-17 1:39 ` [PATCH v2 10/11] HID: hid-lenovo-go-s: Use devm_kzalloc for drvdata Derek J. Clark
2026-10-17 2:23 ` sashiko-bot
2026-10-17 1:39 ` [PATCH v2 11/11] HID: hid-lenovo-go-s: Stop and close device on probe failure Derek J. Clark
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261017013956.2440130-1-derekjohn.clark@gmail.com \
--to=derekjohn.clark@gmail.com \
--cc=bentiss@kernel.org \
--cc=jikos@kernel.org \
--cc=kernel@lists.opengamingcollective.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pgriffais@valvesoftware.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.