X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fusb%2Fcore%2Fconfig.c;h=43f0c13b0e81c3e5bb9f79eb6a346e41d25d2b51;hb=c3726b442527ab31c7110d0445411f5b5343db01;hp=5a28a14ffa1b8eb5c02bd2bd963c23a9bcc2e7af;hpb=c5ddd2e9e4730c716f473d96b4490b0a83890628;p=pandora-kernel.git diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c index 5a28a14ffa1b..43f0c13b0e81 100644 --- a/drivers/usb/core/config.c +++ b/drivers/usb/core/config.c @@ -207,6 +207,16 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno, int inum, if (ifp->desc.bNumEndpoints >= num_ep) goto skip_to_next_endpoint_or_interface_descriptor; + /* Check for duplicate endpoint addresses */ + for (i = 0; i < ifp->desc.bNumEndpoints; ++i) { + if (ifp->endpoint[i].desc.bEndpointAddress == + d->bEndpointAddress) { + dev_warn(ddev, "config %d interface %d altsetting %d has a duplicate endpoint with address 0x%X, skipping\n", + cfgno, inum, asnum, d->bEndpointAddress); + goto skip_to_next_endpoint_or_interface_descriptor; + } + } + endpoint = &ifp->endpoint[ifp->desc.bNumEndpoints]; ++ifp->desc.bNumEndpoints;