Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp623590pxb; Tue, 1 Feb 2022 07:11:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJxssVH4D3BxC1CqC6LYKMsh8juS/Ab6890VmMLZCWQwQ5pPu4YgcsF7tQYBqN7eaH62KGpu X-Received: by 2002:a17:907:160a:: with SMTP id hb10mr12784273ejc.142.1643728313760; Tue, 01 Feb 2022 07:11:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643728313; cv=none; d=google.com; s=arc-20160816; b=WYSzVetUpNMv/9Aceknv8OAITse4PF0uY3XCDU1JX6GrTox2hiIDNBguAKhCMi1JVJ TvKkhIaH0QluaoRtkM4kwdOGC0mJh7HxjO8Mm4wbkNIvs3oiM0FM9YLZhCrLGtNNC5yh OPe+MoU5CyzLLUFv4UfbuQ6DnpXRaLtBb3IAT2SywkxqqCHYqRAI7u4D67+mUkAomhH3 n2w84rab+emo4saznmFbkEIfKII8meeOS7RqgW1xIPB2h9FMsgvjDPzlwYngq3sNWrly 4srCeg26WBNqeDsR9Q+cV/VS9udG4C/2oqfZ7hCx2Yzu9AAnzp6mx3qBSTvihM46d/19 w/iQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=2WzkOWbIGCxdnVfXxbYeaOq1kkhUVPgWWkMq9T4jHSE=; b=vH8fnHdaHbf5jfJTx96gJx4Pusi0JY81nJwfEosbiO1zVO+ZyCAKLUVt2eYTv1K5wF jJZepiFVRAvTgHeRw0mafvbJIumuHVXZ1avuA5SlhStaeah9bXyeabyrUHTWlgwNXdnM ddqbBfZZPXCW3IOEU1LHueEsvOE4x/yP/TP1P5A/6h3A0EjA2XEh2iV2svddhEKf9ANk FBhDCI8GrbpcXu86hSvaEGRJLiZJHIP0O36BfSNHsK+QztUwkfxNHl/icWna6SzPqdLN RG8yZDQvRq+Qi87oo88ZDBZ6xD/0mK6oPlMLE5OsQlt75J/STHj7jFKpSeBGrEZd4d+d qGqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=bvWeAhe+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f22si9284706edr.114.2022.02.01.07.11.28; Tue, 01 Feb 2022 07:11:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=bvWeAhe+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230382AbiA3V64 (ORCPT + 99 others); Sun, 30 Jan 2022 16:58:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229472AbiA3V6y (ORCPT ); Sun, 30 Jan 2022 16:58:54 -0500 Received: from mail-il1-x135.google.com (mail-il1-x135.google.com [IPv6:2607:f8b0:4864:20::135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A721AC061714; Sun, 30 Jan 2022 13:58:54 -0800 (PST) Received: by mail-il1-x135.google.com with SMTP id s1so10072793ilj.7; Sun, 30 Jan 2022 13:58:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2WzkOWbIGCxdnVfXxbYeaOq1kkhUVPgWWkMq9T4jHSE=; b=bvWeAhe+cBYkOf8yfESB8c/eVFNJtaz5kGSi0Obb7CJpqjJPQsAf3Hm4uoD9OE7IyB /5AIwx60UF9dAHw5Nt7hRhionD80uqShGX2FTE5oikDnODb+eiLIxZnlJEYWkv69IhaH WCXyqyPV9qxsH87vTvbr2XZvEvS58ShPSoFDDSwmvCi6geLTP/cXJGcmyRa/eNVPvvjC nbFBb3W2Psi2CyrC+J0Ps4WmGwUzFuAWKJlRe9w/0RliAk9WPm7/P87aC14sNjFubkT1 JPptaX0e4fmcdQBIxDJybUWpYlQvC3tiFcDGYfeANiTUyQcECPChvs/rTzEhvm+ALMN3 K63Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2WzkOWbIGCxdnVfXxbYeaOq1kkhUVPgWWkMq9T4jHSE=; b=UsLMPLk4XFonEYTDE4i7S5JQYfXCPqI34TuedepdI1/triAuZShGTNQxh+KtvJJIRJ HZ9Tsm9J0cilpwWPgh4IxGP0xI5UsSPQ/qaMra4apy09AvB5VTyZjs64W+XliQtOOohS fjbjk4Oo1BoUu0wfWjtYsNZvTzk33Uq5Ua+fIa9wTKx7NFjB8Mi8jS1J7d9HrTJKoP5e jedVaGp+nO+jBVqwQDpMkRk/mGEw82lTqv8DgIBiFKDdI11cx3UpYzuL+bzDgatYR2Q2 CIl+gDSY8Ue0a75x3rEnXLX/lc6EHZFDO4FNYV7RkjKFMjPJB83p9tLFb+A5MW2H0awK B7jg== X-Gm-Message-State: AOAM533MnQTFwNze2uK336Jq7lpeCEuO5kof/2iBSyvKYv7UVOObtacs ao2CWw/GU/DbJA6VZIgeMXLRfvZPqXbr7MonfPI= X-Received: by 2002:a05:6e02:1244:: with SMTP id j4mr11187403ilq.28.1643579933258; Sun, 30 Jan 2022 13:58:53 -0800 (PST) MIME-Version: 1.0 References: <20220126205214.2149936-1-jannh@google.com> In-Reply-To: From: Andrey Konovalov Date: Sun, 30 Jan 2022 22:58:42 +0100 Message-ID: Subject: Re: [PATCH] usb: raw-gadget: fix handling of dual-direction-capable endpoints To: Greg Kroah-Hartman Cc: Felipe Balbi , USB list , LKML , Jann Horn , stable@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 26, 2022 at 11:37 PM Andrey Konovalov wrote: > > On Wed, Jan 26, 2022 at 11:31 PM Jann Horn wrote: > > > > On Wed, Jan 26, 2022 at 11:12 PM Andrey Konovalov wrote: > > > On Wed, Jan 26, 2022 at 9:52 PM Jann Horn wrote: > > > > > > > > Under dummy_hcd, every available endpoint is *either* IN or OUT capable. > > > > But with some real hardware, there are endpoints that support both IN and > > > > OUT. In particular, the PLX 2380 has four available endpoints that each > > > > support both IN and OUT. > > > > > > > > raw-gadget currently gets confused and thinks that any endpoint that is > > > > usable as an IN endpoint can never be used as an OUT endpoint. > > > > > > > > Fix it by looking at the direction in the configured endpoint descriptor > > > > instead of looking at the hardware capabilities. > > > > > > > > With this change, I can use the PLX 2380 with raw-gadget. > > > > > > > > Fixes: f2c2e717642c ("usb: gadget: add raw-gadget interface") > > > > Signed-off-by: Jann Horn > > > > --- > > > > drivers/usb/gadget/legacy/raw_gadget.c | 2 +- > > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > > > diff --git a/drivers/usb/gadget/legacy/raw_gadget.c b/drivers/usb/gadget/legacy/raw_gadget.c > > > > index c5a2c734234a..d86c3a36441e 100644 > > > > --- a/drivers/usb/gadget/legacy/raw_gadget.c > > > > +++ b/drivers/usb/gadget/legacy/raw_gadget.c > > > > @@ -1004,7 +1004,7 @@ static int raw_process_ep_io(struct raw_dev *dev, struct usb_raw_ep_io *io, > > > > ret = -EBUSY; > > > > goto out_unlock; > > > > } > > > > - if ((in && !ep->ep->caps.dir_in) || (!in && ep->ep->caps.dir_in)) { > > > > + if (in != usb_endpoint_dir_in(ep->ep->desc)) { > > > > dev_dbg(&dev->gadget->dev, "fail, wrong direction\n"); > > > > ret = -EINVAL; > > > > goto out_unlock; > > > > > > > > base-commit: 0280e3c58f92b2fe0e8fbbdf8d386449168de4a8 > > > > -- > > > > 2.35.0.rc0.227.g00780c9af4-goog > > > > > > Reviewed-by: Andrey Konovalov > Tested-by: Andrey Konovalov Greg, could you PTAL and pick this up? It also makes sense to include this fix into stable kernels. Cc: Thanks!