Re: [PATCH v14 0/2] Lenovo Yoga Book 9 keyboard dock detection

From: Ilpo Järvinen

Date: Fri Jul 24 2026 - 07:49:49 EST


On Wed, 22 Jul 2026, Dave Carey wrote:

> Changes in v14 (addressing Ilpo Järvinen's v13 review of patch 2/2):
>
> - Restore #include <linux/compiler_attributes.h> and <linux/spinlock.h>,
> which were accidentally absent from v13.
> - Restore spinlock_t lock in struct yb9_kbdock_data, spin_lock_init(),
> and spin_lock/spin_unlock around input_report_switch + input_sync
> in yb9_kbdock_report().
> - Restore pointer-out yb9_kbdock_query(d, u32 *bkbd) and removal of
> zero-initializer from struct wmi_buffer out.
> - Restore int return from yb9_kbdock_sync() and error propagation in
> yb9_kbdock_resume() and yb9_kbdock_block_probe().

Hi,

Unfortunately, this still seems to miss one non-cosmetic change (diff of
diffs, v12 vs v14):

diff --git a/drivers/platform/x86/lenovo/yb9-kbdock.c b/drivers/platform/x86/lenovo/yb9>
new file mode 100644
-index 0000000..0000000
+index 0000000..40a2566
--- /dev/null
+++ b/drivers/platform/x86/lenovo/yb9-kbdock.c
-@@ -0,0 +1,322 @@
+@@ -0,0 +1,324 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Lenovo Yoga Book 9 keyboard-dock detection
@@ -421,8 +449,10 @@
+ /*
+ * _WED(0xEB) returns EC.BKBD directly as a 32-bit integer
+ * (LENOVO_BTKBD_EVENT WmiDataId(1) uint32 Status).
-+ * Short-buffer guard is handled by .min_event_size below.
+ */
++ if (!data || data->length < sizeof(__le32))
++ return;
++
+ u32 bkbd = le32_to_cpu(*(const __le32 *)data->data);
+
+ blocking_notifier_call_chain(&yb9_kbdock_chain_head, bkbd, NULL);
@@ -441,7 +471,6 @@
+ .id_table = yb9_kbdock_event_id_table,
+ .no_singleton = true,
+ .notify_new = yb9_kbdock_notify_new,
-+ .min_event_size = sizeof(__le32),
+};
+
+/* ------------------------------------------------------------------


> Changes in v13:

[...snip...]

> Changes in v10 (addressing Armin Wolf's v9 review of patch 2/2):

[...snip...]

> - yb9_kbdock_notify_new(): drop manual length check; use
> .min_event_size = sizeof(__le32) in struct wmi_driver instead
>
> Patch 1/2 (lenovo-ymc) is unchanged from v9.


...And there's no need to apologize. :-)


I personally keep earlier versions of the patches I've sent myself around
as files so I can easily do diff-of-diffs against the previous version. It
has saved me sooo many time from making fool of myself.

I actually normally write the patch version history bullets based on that
diff so I won't forget anything important from it. Nor hallucinate some
changes that I thought I'd made but didn't (=> back to the drawing board).


If you need the old version you can probably get them from lore archive if
you don't have them around anymore (but by not placing them cleanly into
own threads one needs to be careful to get the right ones).

--
i.