Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751642AbdILS2u (ORCPT ); Tue, 12 Sep 2017 14:28:50 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:38231 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751038AbdILS2s (ORCPT ); Tue, 12 Sep 2017 14:28:48 -0400 X-Google-Smtp-Source: ADKCNb722357X0a1MzgRp5wIhfFuQTx5hKdkpm/JHWihITkhlN2h6L7al571lIUiOKFjb7ILGRI6wg== Date: Tue, 12 Sep 2017 11:28:44 -0700 From: Dmitry Torokhov To: Cameron Gutman Cc: rojtberg@gmail.com, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, andreyknvl@google.com Subject: Re: [PATCH] Input: xpad - validate USB endpoint type during probe Message-ID: <20170912182844.GA6654@dtor-ws> References: <20170912181212.15427-1-aicommander@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170912181212.15427-1-aicommander@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1694 Lines: 48 On Tue, Sep 12, 2017 at 11:12:12AM -0700, Cameron Gutman wrote: > We should only see devices with interrupt endpoints. Ignore any other > endpoints that we find, so we don't send try to send them interrupt URBs > and trigger a WARN down in the USB stack. > > Reported-by: Andrey Konovalov > Tested-by: Andrey Konovalov > Cc: # c01b5e7464f0 Input: xpad - don't depend on endpoint order > Cc: > Signed-off-by: Cameron Gutman Applied, thank you. > --- > To be able to hit any of the LTS kernels, we'll need to also cherry pick > c01b5e7464f0 ("Input: xpad - don't depend on endpoint order"). In hindsight, > this commit also addresses a malicious USB device case, since a device could > purposefully trick us into sending URBs to an endpoint in the wrong direction. > --- > drivers/input/joystick/xpad.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c > index f8e34ef643c7..d86e59515b9c 100644 > --- a/drivers/input/joystick/xpad.c > +++ b/drivers/input/joystick/xpad.c > @@ -1764,10 +1764,12 @@ static int xpad_probe(struct usb_interface *intf, const struct usb_device_id *id > struct usb_endpoint_descriptor *ep = > &intf->cur_altsetting->endpoint[i].desc; > > - if (usb_endpoint_dir_in(ep)) > - ep_irq_in = ep; > - else > - ep_irq_out = ep; > + if (usb_endpoint_xfer_int(ep)) { > + if (usb_endpoint_dir_in(ep)) > + ep_irq_in = ep; > + else > + ep_irq_out = ep; > + } > } > > if (!ep_irq_in || !ep_irq_out) { > -- > 2.14.1 -- Dmitry