From patchwork Wed Apr 18 03:18:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 10347317 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 3A25A6031B for ; Wed, 18 Apr 2018 03:19:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3614228469 for ; Wed, 18 Apr 2018 03:19:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2A5D928470; Wed, 18 Apr 2018 03:19:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 92FF728469 for ; Wed, 18 Apr 2018 03:19:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753580AbeDRDTj (ORCPT ); Tue, 17 Apr 2018 23:19:39 -0400 Received: from mail-cys01nam02on0040.outbound.protection.outlook.com ([104.47.37.40]:50816 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753144AbeDRDTh (ORCPT ); Tue, 17 Apr 2018 23:19:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pitt.onmicrosoft.com; s=selector1-pitt-edu; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=0Mo4TvKQk38k6LkthX3Sw1JPnj2GrI1ojpkIZI8byOc=; b=fbjmjhHoEQ6dbQmIowUlFhjuMAYiMgalEGPpWWTDluyS3laPCO6BRfs7aZgtONBVWaLtUjI74Q+Rl3YExFECYqW9sYc6V0kk97ER/8Wm3RzN2YSJdDGHTkeqUmZgRLIZrBzOobPtBzUsjtSSmZIOi/N9hTVO1/tbIE1zVcCL3eg= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=pitt.edu; Received: from garnet.hsd1.pa.comcast.net (2601:547:500:1222::543d) by CY1PR04MB1926.namprd04.prod.outlook.com (2a01:111:e400:50f1::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.9; Wed, 18 Apr 2018 03:19:36 +0000 From: Paul Elder To: linux-usb@vger.kernel.org Cc: Paul Elder , laurent.pinchart@ideasonboard.com Subject: [PATCH 2/4] usb: gadget: composite: add function to increment delayed_status Date: Tue, 17 Apr 2018 23:18:14 -0400 Message-Id: X-Mailer: git-send-email 2.17.0 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [2601:547:500:1222::543d] X-ClientProxiedBy: BN3PR03CA0105.namprd03.prod.outlook.com (2603:10b6:400:4::23) To CY1PR04MB1926.namprd04.prod.outlook.com (2a01:111:e400:50f1::22) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:(55037057525728); BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989080)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(8990040)(2017052603328)(7153060)(7193020); SRVR:CY1PR04MB1926; X-Microsoft-Exchange-Diagnostics: 1; CY1PR04MB1926; 3:o8nQ1XwaKxJu/Lsmj5gGIwiFQDb68yq9d4qDRIlA08zce4je537laFAlQbbI7PACcDFl1KCUahw7I/XIexMFPr1nR9aW8jRqWr3LjoMQaHWJdvDH5w9lqC/X4Oar0kJLcr3g0rS/ULV8L2RMXE8jzwsaVYQ0/Zoaygn4kzSIwvJ/NS9I+6+HsgqWJjn6qA2mXpHL3/zNta1mL1VOtWpm8t9twYP/3/xc3NbvQKDUVFdYWu0OlpY5PFSqhFlmZ7b3A1Pv9PFrYNIjmRp/q2vXyqYO0lmImeYnkqf1On8t1l8=; 25:uDkbOeBXfSakswPJTkzcAl24rmJgJVqTlLNUDsA0F0h3goQLEn23N53A5wNoQ4e9ilZLChQ97UnaogTkR0LY7AC/6EjAdLiwkhJV9h7EfHSPI1HhdVKRF4nOrP3oSjE+na9G9Zg5+AVKR5ATnnBL2Tk0O9xdkrR+ZlTWXzOZ0uoa6dA6kzqboE1HYJFlUo4n8jYtWhjvM7wlacNh2zjozOyLYs9wQ2wNdGPCnO3CXDkPhLtSKZ5+Xyw6zghKaXDLhLNx1ds2oDzd1WKQpIaVpLV5v+GtzAlzLAmb3hzcBHzkCyrp8P7f98uvhSPEo/geEaT7gZzP8KPry4lTe3hIxg==; 31:k5L317HK/mJlvEa/KKuxoPb38kiziFdkrpcj4MXgWqRZe2iDbcj/1uV+WMdhBR+VlHReK41xA5uDtoDZL4Xo37lIMgOvSNi/Ci69atxehR9TxdAGMzQOk9WK0bquj3NF2uAHoqPZJZUyNNtFTtbj74xf1E09Vo666SI0NCkW9Ekzh3Kc1S4k45e1kUpIIqWcZTKm79EYI56/J1YZT6mkUUFEztTk9XcPFnp5Q8SHWLE= X-MS-TrafficTypeDiagnostic: CY1PR04MB1926: X-Microsoft-Exchange-Diagnostics: 1; CY1PR04MB1926; 20:MtuFWFoxFhkiOGXhK6mVti+7HdzgsT2bDoiVM4dSXovYd94Wu2dkXnl/DZ5C2z4vBJ2VdE/DD+DzzilHVTeMs4gNpjuqgokyqcAKpA7JmtMqkvVCgUEr223F6qnI2d/VLpQhkVE1D4Zv5dcYcl++pLUC3L0J26vA3evJWsAWHNTYuM1I+DIFjvzLdxsUh1PrTfeNvMd3H5cLEwPCFLY0MaEI3ur8YRd6OpTsaEnXGerWD8V95srMv4aSFPKJLKTe3JbYzDwPqCdVYAd3q5SoUNLkKN9nz1dj26ctW2OWo49ahTJ7yQzNk/iMgHG6fZWlG6WOfS960kNQhDRfABbZ+ZM08oKyUsG/3k0x5HDjGARR7vgAoimYnw756V5MHjUp65BlPmqiEbomBFrT5ku5qpce4v4VYd56J19VByaR2gWN5+Smk6SNqe+oSrVdsvkQ9db86zs2WsqhsFSnK8DxUXgeMQpf4G76dtet2O/wVrpu2iFYIG6Jz5PpLofqAQSn; 4:6qRrfDRlK0+XN4z2zVie8l4Oc9Q+U71VrSORNUZgvNgwsD3B5ANJeKMZtMxnYmBlUFINvX8X45/xXtzgx7RKoiTpWlFeBqq3hUfYnuNwcwWh4MO1gr7Fqcmj+Gazm9z1sd9OTft378lrXZIBbbwJePQYnQyq1+5dbYJphyPGYzYsXEmRl60mApIV7X4/5Js1sk0gSl/YIuHFU4pL7Oid59olELAMqOeTq22Fvv/k4RKRI2xA5kFL7vH8jFysWzNfFMvbazEFg0NY1mBBJrrkV6QnDLEou64cCLy4x0izeM6iiht67FOXVwQkiYI7LzoU X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(55037057525728); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(3231232)(944501327)(52105095)(10201501046)(6041310)(201703131423095)(201702281529075)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:CY1PR04MB1926; BCL:0; PCL:0; RULEID:; SRVR:CY1PR04MB1926; X-Forefront-PRVS: 06469BCC91 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(376002)(39380400002)(396003)(366004)(346002)(39860400002)(52396003)(16586007)(7736002)(6486002)(476003)(75432002)(786003)(52116002)(2361001)(316002)(6116002)(6506007)(59450400001)(46003)(575784001)(2616005)(305945005)(478600001)(446003)(11346002)(186003)(16526019)(86362001)(76176011)(25786009)(2906002)(88552002)(48376002)(50226002)(118296001)(4326008)(8676002)(8936002)(50466002)(81166006)(5660300001)(44832011)(36756003)(6916009)(2351001)(6512007)(6666003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR04MB1926; H:garnet.hsd1.pa.comcast.net; FPR:; SPF:None; LANG:en; MLV:sfv; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR04MB1926; 23:DOS+LAgl/w2uJpkE2v2HJf2sdHvqSMbpSeb/2GjC1?= =?us-ascii?Q?7Tme6OA3UXkggJw8zBgfE6jZzPlz5qoeFk4zOYls4jE2jiQiytfxaUvkdP1q?= =?us-ascii?Q?lZCwkZfPVel1aR3lkpfOWWObt1Nu8wHMDtZkI9Ju2O7wXhK+ADGOIl3whElg?= =?us-ascii?Q?8jHSmVQunUZtfIdGg5eginQ5SXYBNIbWzM9nlmF5ssysSsCCa73pujJ+gKzY?= =?us-ascii?Q?HWn0IaZNupoUXL8P8iefU/CnsizJS8gznbCdH3PlS63+f3J92nWPVQiZ5THR?= =?us-ascii?Q?UDs7NJ+zzPwanbWX32DCdBu+ffo3PJRdwVuVLYruziOnmBhqu7CdJDZdO+4h?= =?us-ascii?Q?N1drcm4+U4/6LsbfjLYapbCCEo91inbAollRuunW6Yah9++zeG0iy9uQV4fz?= =?us-ascii?Q?e6zptmBZFVyS5yVEd01EDwQM1/B3GgIOIWLLLm3KqF+X756IDvxz9a3NKL7p?= =?us-ascii?Q?OyTfnxZnQvuSQ5KBqDpyk4ubfTzSBklFfJGtQ+pwut6X1qNh69S5IB2N3lLI?= =?us-ascii?Q?ZB1LdXjW6Fh+I92DOydeN5vYVVlMr7fmjQywgl+dMB2tFaGYqnazpeDUs89g?= =?us-ascii?Q?NSei1r9PMyWsI+AMrZ1JqkcBv0HK5O+uVmRv67Gqxswhb37OtJrKqnxCVQ6I?= =?us-ascii?Q?J3IF6hEniE/O8SaGWgFWF/4jmP8LOxpxL0/p6ZToErC0WjqVgmr5GWvXCIAc?= =?us-ascii?Q?Tl8X+8GEVYVqlN7xH66BmPE3AxtKXM1KTF1Pfa69adCkgFW5e9Vz2wLOlfnv?= =?us-ascii?Q?WstnU8cRxveFLGTTgqlQ3npf/RlWANx8d2m/cydKulvl4wH/cP7E1n8pLmKD?= =?us-ascii?Q?FlCxpQqMTcfo2OQgFMJBamo3BqBRLrVWe+bKKIDKYFpI6mOd6sNVjUD7jsgt?= =?us-ascii?Q?87rmAbus8gi4T4XQUAZwIv71+LHzSBN8fMqqaryKx3x6nr1ocCfjKazojwpE?= =?us-ascii?Q?Dkwxx0IGu7US+wlKb3ZE8dCZF+i0ZrX9sTuu7/gwBsuLUNvt5/DtzzvNCY0g?= =?us-ascii?Q?lLUkGuPMCd9H08UYNRwAJ5dRxOf0NN0cHXaTitkqX43oJUVOdR9ln/hrDP3T?= =?us-ascii?Q?QhjOWD3AMkfq0yF3qYPysOhmnnvAARu87tsfdlwFQFuw2ft2A=3D=3D?= X-Microsoft-Antispam-Message-Info: /L3FS8DzwdjQagA4+ruf2WeFLH1s6KZnHbY3y8TCyE411Iv0psqqVm2iUYxCaB4gjcTiKfF3z8QHhREy60b4WOCUm2y1TX+U2JdmU8ew4oL/ujrvEE7g7T6AQ4+4hSvaWH2zybO+gr5E+RO1KViy/3lov9XZyLJ9sKCG8RQezUodFf4tRkmBnPw5DCeA6DvS X-Microsoft-Exchange-Diagnostics: 1; CY1PR04MB1926; 6:LYG/IJCMop5qEQBLDUc9UjooWceTuXDnGF71xDPEdk4XmwTqI28YLikkmeZwr4VnTDH89jYCY+eKCUyFRyQhN51fPZ77e5dKPJLruIn/RpSgenRImU6iifWala6OLUDb+fgjlgdD15dmKpNzip96X3FkHaGaCJMFaIHHHv/af2qY0Hu5rOStNcNGSkFoHA/2lPGx56oQZxk8GO8EGvCNuansxkC6+iFt1xavwp0yvWnknOTaoZL96CYnMpy7wQ/T0Bp0n0ic0Al1yol9zyyvY5ZQ03O9qhQK3CzVu+NEuqeFUTBfFmPziYOQ8nEMvbBvHCCzlX4d2hBYgAZEi3zY9NhjdsJbQTpNZOqqPuuuf6E3S7z9kGEA/40eBdnnbq3pRBm72pJZUxpv2+v7Hoaf2Ap/5IGDSHzzby0Mtv7yJZBP5R32d6TZJmRuLoI7fcGj33YoDlkYAn7x+RYW/rM3yA==; 5:fCMDPQY6sIQ631czTq0PT9e4tkw0F/LHwoDYDplFpvpgu0cnAnppIcZAayR4EZyjkie9e/TgmQ+VXLXWJYfXGtof+gibweMllewyoEqekxGmrQW3+K45+bERXvzsZRIDPBybWlfhH+KcHwo0yjby7C3J05wUMMS8thOnw1aGo8c=; 24:Aa0jwEuyISfRRIZSe88RN0PYxtNZGpcXFUEgyWsjh0UN4GVnNTwkXRZDtoNuoeINmHzObLu3WtURoZdCpDsgsaRa9zLDx5qSDnGCksHz2gQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR04MB1926; 7:w8JCMz/UAiBMvTv99aOLYPXuqZC87kL+noqvsX5NwnFcsZHhgTj5bYjqs/z+K7XO2HX4MWDPI4y+bhDG5vFLa6ElCHyV143votjUy4U/vWo2hPjJqSdHMGOJm+2Vvgvv7sZnPgftMrAnKgTThmSvBjqoh+fzERO/NHZjM//OwzXpNKqNoLpp2e7FMwkIffcpL0ixziGuhiV4sytK4sb9iCmNlopggP2C7ny+BJKukYHqpJ7jllO1qkyXBa6pD+WF X-MS-Office365-Filtering-Correlation-Id: a44afaf0-257f-414b-1efc-08d5a4db36db X-OriginatorOrg: pitt.edu X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2018 03:19:36.4166 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a44afaf0-257f-414b-1efc-08d5a4db36db X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 9ef9f489-e0a0-4eeb-87cc-3a526112fd0d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR04MB1926 Sender: linux-usb-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The completion of the usb status phase from uvc_function_set_alt needs to be delayed until uvc_v4l2_streamon/off. This is currently done by uvc_function_set_alt returning USB_GADGET_DELAYED_STATUS and composite_setup detecting this to increment cdev->delayed_status. However, if uvc_v4l2_streamon/off is called in between this return and increment, uvc_function_setup_continue within uvc_v4l2_streamon/off will WARN that cdev->delayed_status is zero. To fix situations like this, add a function to increment cdev->delayed_status. Signed-off-by: Paul Elder --- drivers/usb/gadget/composite.c | 6 ++++++ include/linux/usb/composite.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index 77c7ecca816a..c02ab640a7ae 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -1548,6 +1548,12 @@ static int fill_ext_prop(struct usb_configuration *c, int interface, u8 *buf) return 0; } +void usb_composite_setup_delay(struct usb_composite_dev *cdev) +{ + cdev->delayed_status++; +} +EXPORT_SYMBOL(usb_composite_setup_delay); + /* * The setup() callback implements all the ep0 functionality that's * not handled lower down, in hardware or the hardware driver(like diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index cef0e44601f8..049f77a4d42b 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h @@ -524,6 +524,8 @@ extern int composite_setup(struct usb_gadget *gadget, extern void composite_suspend(struct usb_gadget *gadget); extern void composite_resume(struct usb_gadget *gadget); +extern void usb_composite_setup_delay(struct usb_composite_dev *c); + /* * Some systems will need runtime overrides for the product identifiers * published in the device descriptor, either numbers or strings or both.