On 05/08/21(Thu) 09:41, Aaron Bieber wrote:
> 
> Stuart Henderson writes:
> 
> > On 2021/07/13 01:29, Anindya Mukherjee wrote:
> >> I have a Cyber Power CP1500PFCLCDa UPS and get exactly the same crash on 
> >> the
> >> latest snapshot if the USB cable is unplugged. My dmesg is very similar so 
> >> I've
> >> omitted it, but I'd also be happy to help debug this issue.
> >> 
> >> Regards,
> >> Anindya
> >> 
> >
> > First try backing out the "Allow uhidev child devices to claim selective
> > report ids" commit from March.
> 
> Here is a diff that reverts:
> 
> 2021-03-08 6545f693 jcs       Add another Type Cover device
> 2021-03-08 1f85050a jcs       regen
> 2021-03-08 fc9d2605 jcs       Add Surface Pro Type Cover
> 2021-03-08 f31b43ce jcs       Allow uhidev child devices to claim selective 
> report ids
> 
> With them reverted, my UPS(s) no longer trigger panics on disconnect.

The bugs lies in upd_match() and has been introduced with the change
containing UHIDEV_CLAIM_MULTIPLE_REPORTID.

upd(4) owns all the reportID of a USB device, so a "uha.claimed" logic
similar to what has been written for umt_match() is missing.

> diff --git a/sys/dev/usb/fido.c b/sys/dev/usb/fido.c
> index c6d846aaa84..77bd9b12175 100644
> --- a/sys/dev/usb/fido.c
> +++ b/sys/dev/usb/fido.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: fido.c,v 1.3 2021/03/08 14:35:57 jcs Exp $    */
> +/*   $OpenBSD: fido.c,v 1.2 2019/12/18 05:09:53 deraadt Exp $        */
>  
>  /*
>   * Copyright (c) 2019 Reyk Floeter <r...@openbsd.org>
> @@ -63,7 +63,7 @@ fido_match(struct device *parent, void *match, void *aux)
>       void                     *desc;
>       int                       ret = UMATCH_NONE;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (ret);
>  
>       /* Find the FIDO usage page and U2F collection */
> diff --git a/sys/dev/usb/ucycom.c b/sys/dev/usb/ucycom.c
> index ca8636f0a7f..ca6d6e9c6b2 100644
> --- a/sys/dev/usb/ucycom.c
> +++ b/sys/dev/usb/ucycom.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: ucycom.c,v 1.39 2021/03/08 14:35:57 jcs Exp $ */
> +/*   $OpenBSD: ucycom.c,v 1.38 2020/02/25 10:03:39 mpi Exp $ */
>  /*   $NetBSD: ucycom.c,v 1.3 2005/08/05 07:27:47 skrll Exp $ */
>  
>  /*
> @@ -165,7 +165,7 @@ ucycom_match(struct device *parent, void *match, void 
> *aux)
>  {
>       struct uhidev_attach_arg *uha = aux;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (UMATCH_NONE);
>  
>       return (usb_lookup(ucycom_devs, uha->uaa->vendor, uha->uaa->product) != 
> NULL ?
> diff --git a/sys/dev/usb/ugold.c b/sys/dev/usb/ugold.c
> index 752ecff64d2..865618cc17d 100644
> --- a/sys/dev/usb/ugold.c
> +++ b/sys/dev/usb/ugold.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: ugold.c,v 1.17 2021/04/05 16:26:06 landry Exp $   */
> +/*   $OpenBSD: ugold.c,v 1.15 2020/08/17 04:26:57 gnezdo Exp $   */
>  
>  /*
>   * Copyright (c) 2013 Takayoshi SASANO <u...@openbsd.org>
> @@ -113,7 +113,7 @@ ugold_match(struct device *parent, void *match, void *aux)
>       int size;
>       void *desc;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (UMATCH_NONE);
>  
>       if (usb_lookup(ugold_devs, uha->uaa->vendor, uha->uaa->product) == NULL)
> diff --git a/sys/dev/usb/uhid.c b/sys/dev/usb/uhid.c
> index 085c1523ccf..ba21e8cf96f 100644
> --- a/sys/dev/usb/uhid.c
> +++ b/sys/dev/usb/uhid.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: uhid.c,v 1.84 2021/03/08 14:35:57 jcs Exp $ */
> +/*   $OpenBSD: uhid.c,v 1.83 2021/01/29 16:59:41 sthen Exp $ */
>  /*   $NetBSD: uhid.c,v 1.57 2003/03/11 16:44:00 augustss Exp $       */
>  
>  /*
> @@ -115,7 +115,7 @@ uhid_match(struct device *parent, void *match, void *aux)
>  {
>       struct uhidev_attach_arg *uha = aux;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (UMATCH_NONE);
>  
>       return (UMATCH_IFACECLASS_GENERIC);
> diff --git a/sys/dev/usb/uhidev.c b/sys/dev/usb/uhidev.c
> index cbd0b8336f6..2333c260d71 100644
> --- a/sys/dev/usb/uhidev.c
> +++ b/sys/dev/usb/uhidev.c
> @@ -1,5 +1,4 @@
>  /*   $OpenBSD: uhidev.c,v 1.92 2021/03/18 09:21:53 anton Exp $       */
> -/*   $NetBSD: uhidev.c,v 1.14 2003/03/11 16:44:00 augustss Exp $     */
>  
>  /*
>   * Copyright (c) 2001 The NetBSD Foundation, Inc.
> @@ -250,28 +249,21 @@ uhidev_attach(struct device *parent, struct device 
> *self, void *aux)
>  
>       uha.uaa = uaa;
>       uha.parent = sc;
> -     uha.reportid = UHIDEV_CLAIM_MULTIPLE_REPORTID;
> -     uha.nreports = nrepid;
> -     uha.claimed = malloc(nrepid, M_TEMP, M_WAITOK|M_ZERO);
> +     uha.reportid = UHIDEV_CLAIM_ALLREPORTID;
>  
> -     /* Look for a driver claiming multiple report IDs first. */
> +     /* Look for a driver claiming all report IDs first. */
>       dev = config_found_sm(self, &uha, NULL, uhidevsubmatch);
>       if (dev != NULL) {
>               for (repid = 0; repid < nrepid; repid++) {
>                       /*
>                        * Could already be assigned by uhidev_set_report_dev().
>                        */
> -                     if (sc->sc_subdevs[repid] != NULL)
> -                             continue;
> -
> -                     if (uha.claimed[repid])
> +                     if (sc->sc_subdevs[repid] == NULL)
>                               sc->sc_subdevs[repid] = (struct uhidev *)dev;
>               }
> +             return;
>       }
>  
> -     free(uha.claimed, M_TEMP, nrepid);
> -     uha.claimed = NULL;
> -
>       for (repid = 0; repid < nrepid; repid++) {
>               DPRINTF(("%s: try repid=%d\n", __func__, repid));
>               if (hid_report_size(desc, size, hid_input, repid) == 0 &&
> @@ -362,7 +354,7 @@ uhidevprint(void *aux, const char *pnp)
>  
>       if (pnp)
>               printf("uhid at %s", pnp);
> -     if (uha->reportid != 0 && uha->reportid != 
> UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid != 0 && uha->reportid != UHIDEV_CLAIM_ALLREPORTID)
>               printf(" reportid %d", uha->reportid);
>       return (UNCONF);
>  }
> diff --git a/sys/dev/usb/uhidev.h b/sys/dev/usb/uhidev.h
> index ad66873ea75..d11b0ad5fde 100644
> --- a/sys/dev/usb/uhidev.h
> +++ b/sys/dev/usb/uhidev.h
> @@ -81,9 +81,7 @@ struct uhidev_attach_arg {
>       struct usb_attach_arg   *uaa;
>       struct uhidev_softc     *parent;
>       uint8_t                  reportid;
> -#define      UHIDEV_CLAIM_MULTIPLE_REPORTID  255
> -     uint8_t                  nreports;
> -     uint8_t                  *claimed;
> +#define      UHIDEV_CLAIM_ALLREPORTID        255
>  };
>  
>  int uhidev_report_type_conv(int);
> diff --git a/sys/dev/usb/ujoy.c b/sys/dev/usb/ujoy.c
> index ca461e5969a..18a35d737b9 100644
> --- a/sys/dev/usb/ujoy.c
> +++ b/sys/dev/usb/ujoy.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: ujoy.c,v 1.2 2021/03/08 14:35:57 jcs Exp $ */
> +/*   $OpenBSD: ujoy.c,v 1.1 2021/01/23 05:08:36 thfr Exp $ */
>  
>  /*
>   * Copyright (c) 2021 Thomas Frohwein        <t...@openbsd.org>
> @@ -104,7 +104,7 @@ ujoy_match(struct device *parent, void *match, void *aux)
>       void                     *desc;
>       int                       ret = UMATCH_NONE;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (ret);
>  
>       /* Find the general usage page and gamecontroller collections */
> diff --git a/sys/dev/usb/umstc.c b/sys/dev/usb/umstc.c
> index 0f232671f95..71cd2d2b829 100644
> --- a/sys/dev/usb/umstc.c
> +++ b/sys/dev/usb/umstc.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: umstc.c,v 1.4 2021/03/08 14:39:34 jcs Exp $ */
> +/*   $OpenBSD: umstc.c,v 1.3 2020/09/14 15:21:08 deraadt Exp $ */
>  
>  /*
>   * Copyright (c) 2020 joshua stein <j...@jcs.org>
> @@ -70,7 +70,6 @@ const struct cfattach umstc_ca = {
>  static const struct usb_devno umstc_devs[] = {
>       { USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_TYPECOVER },
>       { USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_TYPECOVER2 },
> -     { USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_TYPECOVER3 },
>  };
>  
>  int
> diff --git a/sys/dev/usb/umt.c b/sys/dev/usb/umt.c
> index 3aa45bf298a..4218fdefe97 100644
> --- a/sys/dev/usb/umt.c
> +++ b/sys/dev/usb/umt.c
> @@ -1,4 +1,4 @@
> -/* $OpenBSD: umt.c,v 1.4 2021/03/24 02:49:57 jcs Exp $ */
> +/* $OpenBSD: umt.c,v 1.2 2020/08/23 11:08:02 mglocker Exp $ */
>  /*
>   * USB multitouch touchpad driver for devices conforming to
>   * Windows Precision Touchpad standard
> @@ -64,8 +64,8 @@ const struct wsmouse_accessops umt_accessops = {
>  };
>  
>  int  umt_match(struct device *, void *, void *);
> -int  umt_find_winptp_reports(struct uhidev_softc *, void *, int, int *,
> -         int *, int *);
> +int  umt_find_winptp_reports(struct uhidev_softc *, void *, int,
> +         struct umt_softc *);
>  void umt_attach(struct device *, struct device *, void *);
>  int  umt_hidev_get_report(struct device *, int, int, void *, int);
>  int  umt_hidev_set_report(struct device *, int, int, void *, int);
> @@ -86,19 +86,13 @@ int
>  umt_match(struct device *parent, void *match, void *aux)
>  {
>       struct uhidev_attach_arg *uha = (struct uhidev_attach_arg *)aux;
> -     int input = 0, conf = 0, cap = 0;
>       int size;
>       void *desc;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID) {
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID) {
>               uhidev_get_report_desc(uha->parent, &desc, &size);
> -             if (umt_find_winptp_reports(uha->parent, desc, size, &input,
> -                 &conf, &cap)) {
> -                     uha->claimed[input] = 1;
> -                     uha->claimed[conf] = 1;
> -                     uha->claimed[cap] = 1;
> +             if (umt_find_winptp_reports(uha->parent, desc, size, NULL))
>                       return (UMATCH_DEVCLASS_DEVSUBCLASS);
> -             }
>       }
>  
>       return (UMATCH_NONE);
> @@ -106,17 +100,16 @@ umt_match(struct device *parent, void *match, void *aux)
>  
>  int
>  umt_find_winptp_reports(struct uhidev_softc *parent, void *desc, int size,
> -    int *input, int *config, int *cap)
> +    struct umt_softc *sc)
>  {
>       int repid;
> -     int finput = 0, fconf = 0, fcap = 0;
> +     int input = 0, conf = 0, cap = 0;
>  
> -     if (input != NULL)
> -             *input = -1;
> -     if (config != NULL)
> -             *config = -1;
> -     if (cap != NULL)
> -             *cap = -1;
> +     if (sc != NULL) {
> +             sc->sc_rep_input = -1;
> +             sc->sc_rep_config = -1;
> +             sc->sc_rep_cap = -1;
> +     }
>  
>       for (repid = 0; repid < parent->sc_nrepid; repid++) {
>               if (hid_report_size(desc, size, hid_input, repid) == 0 &&
> @@ -126,26 +119,26 @@ umt_find_winptp_reports(struct uhidev_softc *parent, 
> void *desc, int size,
>  
>               if (hid_is_collection(desc, size, repid,
>                   HID_USAGE2(HUP_DIGITIZERS, HUD_TOUCHPAD))) {
> -                     finput = 1;
> -                     if (input != NULL && *input == -1)
> -                             *input = repid;
> +                     input = 1;
> +                     if (sc != NULL && sc->sc_rep_input == -1)
> +                             sc->sc_rep_input = repid;
>               } else if (hid_is_collection(desc, size, repid,
>                   HID_USAGE2(HUP_DIGITIZERS, HUD_CONFIG))) {
> -                     fconf = 1;
> -                     if (config != NULL && *config == -1)
> -                             *config = repid;
> +                     conf = 1;
> +                     if (sc != NULL && sc->sc_rep_config == -1)
> +                             sc->sc_rep_config = repid;
>               }
>  
>               /* capabilities report could be anywhere */
>               if (hid_locate(desc, size, HID_USAGE2(HUP_DIGITIZERS,
>                   HUD_CONTACT_MAX), repid, hid_feature, NULL, NULL)) {
> -                     fcap = 1;
> -                     if (cap != NULL && *cap == -1)
> -                             *cap = repid;
> +                     cap = 1;
> +                     if (sc != NULL && sc->sc_rep_cap == -1)
> +                             sc->sc_rep_cap = repid;
>               }
>       }
>  
> -     return (fconf && finput && fcap);
> +     return (conf && input && cap);
>  }
>  
>  void
> @@ -167,8 +160,7 @@ umt_attach(struct device *parent, struct device *self, 
> void *aux)
>       sc->sc_quirks = usbd_get_quirks(sc->sc_hdev.sc_udev)->uq_flags;
>  
>       uhidev_get_report_desc(uha->parent, &desc, &size);
> -     umt_find_winptp_reports(uha->parent, desc, size, &sc->sc_rep_input,
> -         &sc->sc_rep_config, &sc->sc_rep_cap);
> +     umt_find_winptp_reports(uha->parent, desc, size, sc);
>  
>       memset(mt, 0, sizeof(sc->sc_mt));
>  
> diff --git a/sys/dev/usb/uoaklux.c b/sys/dev/usb/uoaklux.c
> index c97bdf57285..3932b139a51 100644
> --- a/sys/dev/usb/uoaklux.c
> +++ b/sys/dev/usb/uoaklux.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: uoaklux.c,v 1.14 2021/03/08 14:35:57 jcs Exp $   */
> +/*   $OpenBSD: uoaklux.c,v 1.13 2017/04/08 02:57:25 deraadt Exp $   */
>  
>  /*
>   * Copyright (c) 2012 Yojiro UO <y...@nui.org>
> @@ -107,7 +107,7 @@ uoaklux_match(struct device *parent, void *match, void 
> *aux)
>  {
>       struct uhidev_attach_arg *uha = aux;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (UMATCH_NONE);
>  
>       if (uoaklux_lookup(uha->uaa->vendor, uha->uaa->product) == NULL)
> diff --git a/sys/dev/usb/uoakrh.c b/sys/dev/usb/uoakrh.c
> index 1e1e49a426c..66a030409de 100644
> --- a/sys/dev/usb/uoakrh.c
> +++ b/sys/dev/usb/uoakrh.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: uoakrh.c,v 1.16 2021/03/08 14:35:57 jcs Exp $   */
> +/*   $OpenBSD: uoakrh.c,v 1.15 2017/04/08 02:57:25 deraadt Exp $   */
>  
>  /*
>   * Copyright (c) 2012 Yojiro UO <y...@nui.org>
> @@ -110,7 +110,7 @@ uoakrh_match(struct device *parent, void *match, void 
> *aux)
>  {
>       struct uhidev_attach_arg *uha = aux;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (UMATCH_NONE);
>  
>       if (uoakrh_lookup(uha->uaa->vendor, uha->uaa->product) == NULL)
> diff --git a/sys/dev/usb/uoakv.c b/sys/dev/usb/uoakv.c
> index 2963e47da0d..a8cdb734001 100644
> --- a/sys/dev/usb/uoakv.c
> +++ b/sys/dev/usb/uoakv.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: uoakv.c,v 1.14 2021/03/08 14:35:57 jcs Exp $   */
> +/*   $OpenBSD: uoakv.c,v 1.13 2017/04/08 02:57:25 deraadt Exp $   */
>  
>  /*
>   * Copyright (c) 2012 Yojiro UO <y...@nui.org>
> @@ -110,7 +110,7 @@ uoakv_match(struct device *parent, void *match, void *aux)
>  {
>       struct uhidev_attach_arg *uha = aux;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (UMATCH_NONE);
>  
>       if (uoakv_lookup(uha->uaa->vendor, uha->uaa->product) == NULL)
> diff --git a/sys/dev/usb/upd.c b/sys/dev/usb/upd.c
> index ad65b77718b..50cc25af08f 100644
> --- a/sys/dev/usb/upd.c
> +++ b/sys/dev/usb/upd.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: upd.c,v 1.29 2021/03/08 14:35:57 jcs Exp $ */
> +/*   $OpenBSD: upd.c,v 1.28 2021/01/29 16:59:41 sthen Exp $ */
>  
>  /*
>   * Copyright (c) 2015 David Higgs <hig...@gmail.com>
> @@ -155,7 +155,7 @@ upd_match(struct device *parent, void *match, void *aux)
>       int                       ret = UMATCH_NONE;
>       int                       i;
>  
> -     if (uha->reportid != UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid != UHIDEV_CLAIM_ALLREPORTID)
>               return (ret);
>  
>       DPRINTF(("upd: vendor=0x%04x, product=0x%04x\n", uha->uaa->vendor,
> diff --git a/sys/dev/usb/usbdevs b/sys/dev/usb/usbdevs
> index be2674988fb..ab27d9d8fdc 100644
> --- a/sys/dev/usb/usbdevs
> +++ b/sys/dev/usb/usbdevs
> @@ -1,4 +1,4 @@
> -$OpenBSD: usbdevs,v 1.740 2021/05/18 14:23:03 kevlo Exp $
> +$OpenBSD: usbdevs,v 1.731 2021/02/27 03:03:40 jsg Exp $
>  /* $NetBSD: usbdevs,v 1.322 2003/05/10 17:47:14 hamajima Exp $ */
>  
>  /*
> @@ -3125,7 +3125,6 @@ product MICROSOFT DOCKETH2      0x07c6  Surface Dock 
> Ethernet
>  product MICROSOFT SURFETH    0x0927  Surface Ethernet
>  product MICROSOFT TYPECOVER  0x096f  Surface Go Type Cover
>  product MICROSOFT TYPECOVER2 0x09b5  Surface Go Type Cover
> -product MICROSOFT TYPECOVER3 0x09c0  Surface Pro Type Cover
>  
>  /* Microtech products */
>  product MICROTECH SCSIDB25   0x0004  SCSI-DB25
> diff --git a/sys/dev/usb/usbdevs.h b/sys/dev/usb/usbdevs.h
> index c8956e5a562..47cb4ccdecc 100644
> --- a/sys/dev/usb/usbdevs.h
> +++ b/sys/dev/usb/usbdevs.h
> @@ -1,11 +1,3 @@
> -/*   $OpenBSD: usbdevs.h,v 1.752 2021/05/18 14:23:53 kevlo Exp $     */
> -
> -/*
> - * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
> - *
> - * generated from:
> - *   OpenBSD: usbdevs,v 1.740 2021/05/18 14:23:03 kevlo Exp 
> - */
>  /* $NetBSD: usbdevs,v 1.322 2003/05/10 17:47:14 hamajima Exp $ */
>  
>  /*
> @@ -3132,7 +3124,6 @@
>  #define      USB_PRODUCT_MICROSOFT_SURFETH   0x0927          /* Surface 
> Ethernet */
>  #define      USB_PRODUCT_MICROSOFT_TYPECOVER 0x096f          /* Surface Go 
> Type Cover */
>  #define      USB_PRODUCT_MICROSOFT_TYPECOVER2        0x09b5          /* 
> Surface Go Type Cover */
> -#define      USB_PRODUCT_MICROSOFT_TYPECOVER3        0x09c0          /* 
> Surface Pro Type Cover */
>  
>  /* Microtech products */
>  #define      USB_PRODUCT_MICROTECH_SCSIDB25  0x0004          /* SCSI-DB25 */
> diff --git a/sys/dev/usb/usbdevs_data.h b/sys/dev/usb/usbdevs_data.h
> index 97421f8ea74..83f908f7a58 100644
> --- a/sys/dev/usb/usbdevs_data.h
> +++ b/sys/dev/usb/usbdevs_data.h
> @@ -1,11 +1,3 @@
> -/*   $OpenBSD: usbdevs_data.h,v 1.746 2021/05/18 14:23:53 kevlo Exp $        
> */
> -
> -/*
> - * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
> - *
> - * generated from:
> - *   OpenBSD: usbdevs,v 1.740 2021/05/18 14:23:03 kevlo Exp 
> - */
>  /* $NetBSD: usbdevs,v 1.322 2003/05/10 17:47:14 hamajima Exp $ */
>  
>  /*
> @@ -7581,10 +7573,6 @@ const struct usb_known_product usb_known_products[] = {
>           USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_TYPECOVER2,
>           "Surface Go Type Cover",
>       },
> -     {
> -         USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_TYPECOVER3,
> -         "Surface Pro Type Cover",
> -     },
>       {
>           USB_VENDOR_MICROTECH, USB_PRODUCT_MICROTECH_SCSIDB25,
>           "SCSI-DB25",
> diff --git a/sys/dev/usb/uslhcom.c b/sys/dev/usb/uslhcom.c
> index 15291aae645..39db391aecd 100644
> --- a/sys/dev/usb/uslhcom.c
> +++ b/sys/dev/usb/uslhcom.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: uslhcom.c,v 1.7 2021/03/08 14:35:57 jcs Exp $ */
> +/*   $OpenBSD: uslhcom.c,v 1.6 2017/04/08 02:57:25 deraadt Exp $     */
>  
>  /*
>   * Copyright (c) 2015 SASANO Takayoshi <u...@openbsd.org>
> @@ -115,7 +115,7 @@ uslhcom_match(struct device *parent, void *match, void 
> *aux)
>       struct uhidev_attach_arg *uha = aux;
>  
>       /* use all report IDs */
> -     if (uha->reportid != UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid != UHIDEV_CLAIM_ALLREPORTID)
>               return UMATCH_NONE;
>  
>       return (usb_lookup(uslhcom_devs,
> diff --git a/sys/dev/usb/uthum.c b/sys/dev/usb/uthum.c
> index d368472c19a..601abdc64ab 100644
> --- a/sys/dev/usb/uthum.c
> +++ b/sys/dev/usb/uthum.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: uthum.c,v 1.35 2021/03/08 14:35:57 jcs Exp $   */
> +/*   $OpenBSD: uthum.c,v 1.34 2020/02/14 14:55:30 mpi Exp $   */
>  
>  /*
>   * Copyright (c) 2009, 2010 Yojiro UO <y...@nui.org>
> @@ -167,7 +167,7 @@ uthum_match(struct device *parent, void *match, void *aux)
>  {
>       struct uhidev_attach_arg *uha = aux;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (UMATCH_NONE);
>  
>       if (uthum_lookup(uha->uaa->vendor, uha->uaa->product) == NULL)
> diff --git a/sys/dev/usb/utrh.c b/sys/dev/usb/utrh.c
> index c74ca0746ca..cd6f43c06d9 100644
> --- a/sys/dev/usb/utrh.c
> +++ b/sys/dev/usb/utrh.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: utrh.c,v 1.24 2021/03/08 14:35:57 jcs Exp $   */
> +/*   $OpenBSD: utrh.c,v 1.23 2020/02/25 10:03:39 mpi Exp $   */
>  
>  /*
>   * Copyright (c) 2009 Yojiro UO <y...@nui.org>
> @@ -93,7 +93,7 @@ utrh_match(struct device *parent, void *match, void *aux)
>  {
>       struct uhidev_attach_arg *uha = aux;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (UMATCH_NONE);
>  
>       return (usb_lookup(utrh_devs, uha->uaa->vendor, uha->uaa->product) != 
> NULL ?
> diff --git a/sys/dev/usb/utwitch.c b/sys/dev/usb/utwitch.c
> index a7a5479700f..cc8396a21dd 100644
> --- a/sys/dev/usb/utwitch.c
> +++ b/sys/dev/usb/utwitch.c
> @@ -1,4 +1,4 @@
> -/*   $OpenBSD: utwitch.c,v 1.21 2021/03/08 14:35:57 jcs Exp $ */
> +/*   $OpenBSD: utwitch.c,v 1.20 2020/02/25 10:03:39 mpi Exp $ */
>  
>  /*
>   * Copyright (c) 2010 Yojiro UO <y...@nui.org>
> @@ -107,7 +107,7 @@ utwitch_match(struct device *parent, void *match, void 
> *aux)
>  {
>       struct uhidev_attach_arg *uha = aux;
>  
> -     if (uha->reportid == UHIDEV_CLAIM_MULTIPLE_REPORTID)
> +     if (uha->reportid == UHIDEV_CLAIM_ALLREPORTID)
>               return (UMATCH_NONE);
>  
>       return (usb_lookup(utwitch_devs, uha->uaa->vendor, uha->uaa->product) 
> != NULL ?

Reply via email to