[PATCH 4/6] usb: kbd: Ignore Yubikeys
Marek Vasut
marex at denx.de
Wed Feb 21 13:41:32 CET 2024
On 2/21/24 08:25, Janne Grunau via B4 Relay wrote:
> From: Hector Martin <marcan at marcan.st>
>
> We currently only support one USB keyboard device, but some devices
> emulate keyboards for other purposes. Most commonly, people run into
> this with Yubikeys, so let's ignore those.
>
> Even if we end up supporting multiple keyboards in the future, it's
> safer to ignore known non-keyboard devices.
>
> Signed-off-by: Hector Martin <marcan at marcan.st>
> ---
> common/usb_kbd.c | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/common/usb_kbd.c b/common/usb_kbd.c
> index 4cbc9acb73..774d3555d9 100644
> --- a/common/usb_kbd.c
> +++ b/common/usb_kbd.c
> @@ -120,6 +120,15 @@ struct usb_kbd_pdata {
>
> extern int __maybe_unused net_busy_flag;
>
> +/*
> + * Since we only support one usbkbd device in the iomux,
> + * ignore common keyboard-emulating devices that aren't
> + * real keyboards.
> + */
> +const uint16_t vid_blocklist[] = {
> + 0x1050, /* Yubico */
> +};
> +
> /* The period of time between two calls of usb_kbd_testc(). */
> static unsigned long kbd_testc_tms;
>
> @@ -465,6 +474,7 @@ static int usb_kbd_probe_dev(struct usb_device *dev, unsigned int ifnum)
> struct usb_endpoint_descriptor *ep;
> struct usb_kbd_pdata *data;
> int epNum;
> + int i;
>
> if (dev->descriptor.bNumConfigurations != 1)
> return 0;
> @@ -480,6 +490,15 @@ static int usb_kbd_probe_dev(struct usb_device *dev, unsigned int ifnum)
> if (iface->desc.bInterfaceProtocol != USB_PROT_HID_KEYBOARD)
> return 0;
>
> + for (i = 0; i < ARRAY_SIZE(vid_blocklist); i++) {
> + if (dev->descriptor.idVendor == vid_blocklist[i]) {
> + printf("Ignoring keyboard device 0x%x:0x%x\n",
> + dev->descriptor.idVendor,
> + dev->descriptor.idProduct);
> + return 0;
> + }
> + }
I vaguely recall a discussion about previous version of this, I think
the suggestion was to make the list of ignored devices configurable via
environment variable, so users can add to that list from U-Boot shell.
Would it be possible to make it work this way ?
More information about the U-Boot
mailing list