Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp308271pxj; Thu, 17 Jun 2021 03:15:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyiiHUUxCCFg8z09meuRhlKZNh3D6a2KIhLa23mV8xEdFYj0MQEtt5qd46kgH4l5boggJFZ X-Received: by 2002:a17:906:7d3:: with SMTP id m19mr4388032ejc.546.1623924945908; Thu, 17 Jun 2021 03:15:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623924945; cv=none; d=google.com; s=arc-20160816; b=RPtDphgNpbaNI5rstDhSDL4JaEfVeUFGTrVKkjZf4Ve/TZmO4ikMH2S8ot4OHtoIQ/ CsJCet90DWQzS1hwak5euIvkqg/6XhrqqM0DvPtfhM5MEt7LHqMcelUdIWQ5pkYaGy5s mxH2vEz2wjFAFz3GmLOX1Qm/yxeIKuQ8t0uLlnizmy2LDd7uYKq0FSGvb70bV6ZRNE5B sL2tWPa3CCuwg6o91Cl51bJEYzp69EUOVHtSJxRJ/5QinT70aTDkVhjLgEH4DlvgDCbg llb677KEQyXx9Aa1VEvFtSzMcI/8rOUmecXbYS5DSDioxvI8zY+Pg+UJBb8IBLepNbUd 06HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dmarc-filter:sender:dkim-signature; bh=2LHgsP9c4Sin2+nziX6odnlML8co8g8QWj7JMVhPh6c=; b=o5y/i+zr1/7QshV1IaDYg6yvOSG5utk196t/LSXrN3RutRjD2SPthhMvc/mNkt+I9K hypxbeFTvpqzaC1KlNvSpA0CIXNgbDqTi5mSHiy/BADLfBBJKLVm0RIV6C44+TAEyTFK cXm4AlUF6E5/t/8hTYOhcYYCtp/b8qSciFHggGtTQnA+V85F61lEPPj1BfNNPDNLGsSt 0JvfdkSkZAurXx/D+yPueQTZURSh8h7ZNZcJBefqzvHvXMu0/DO5qB6aR0PkPLIjMmHS W2tFX/6yEUb6XOq6k56AcHILah4pqyvrhEidLj+BSEUXxn0tlfCLWdpfCkdAAjRLIyuf aAYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=buKRPiTF; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f21si5082367ejj.567.2021.06.17.03.15.22; Thu, 17 Jun 2021 03:15:45 -0700 (PDT) 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=@mg.codeaurora.org header.s=smtp header.b=buKRPiTF; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231410AbhFQKBM (ORCPT + 99 others); Thu, 17 Jun 2021 06:01:12 -0400 Received: from so254-9.mailgun.net ([198.61.254.9]:18228 "EHLO so254-9.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232116AbhFQKBC (ORCPT ); Thu, 17 Jun 2021 06:01:02 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1623923935; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=2LHgsP9c4Sin2+nziX6odnlML8co8g8QWj7JMVhPh6c=; b=buKRPiTFzNJEHLKG+iKaTSyicWZSGCT0Hy4c/3Sukw/rdqSOiaQM85+bSPsNxM1GssM7169D 7P16kFBqKIlG2ip6fh3W8y62TS0UBSOpkWugfhQ/aoiQodj9sFSVFRJLx++PZyu+jfNl2VWm PvFVlnl+Vk6/npkAI4uN0KGCzIs= X-Mailgun-Sending-Ip: 198.61.254.9 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n05.prod.us-west-2.postgun.com with SMTP id 60cb1cc4e570c05619045f02 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Thu, 17 Jun 2021 09:58:28 GMT Sender: wcheng=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 134A4C43217; Thu, 17 Jun 2021 09:58:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=ALL_TRUSTED,BAYES_00,SPF_FAIL autolearn=no autolearn_force=no version=3.4.0 Received: from wcheng-linux.qualcomm.com (i-global254.qualcomm.com [199.106.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: wcheng) by smtp.codeaurora.org (Postfix) with ESMTPSA id BA3F1C43143; Thu, 17 Jun 2021 09:58:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org BA3F1C43143 Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=wcheng@codeaurora.org From: Wesley Cheng To: balbi@kernel.org, gregkh@linuxfoundation.org, robh+dt@kernel.org, agross@kernel.org, bjorn.andersson@linaro.org, frowand.list@gmail.com Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, jackp@codeaurora.org, fntoth@gmail.com, heikki.krogerus@linux.intel.com, andy.shevchenko@gmail.com, Wesley Cheng Subject: [PATCH v10 2/6] usb: gadget: configfs: Check USB configuration before adding Date: Thu, 17 Jun 2021 02:58:15 -0700 Message-Id: <1623923899-16759-3-git-send-email-wcheng@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1623923899-16759-1-git-send-email-wcheng@codeaurora.org> References: <1623923899-16759-1-git-send-email-wcheng@codeaurora.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Ensure that the USB gadget is able to support the configuration being added based on the number of endpoints required from all interfaces. This is for accounting for any bandwidth or space limitations. Signed-off-by: Wesley Cheng --- drivers/usb/gadget/configfs.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c index 15a607c..76b9983 100644 --- a/drivers/usb/gadget/configfs.c +++ b/drivers/usb/gadget/configfs.c @@ -1374,6 +1374,7 @@ static int configfs_composite_bind(struct usb_gadget *gadget, struct usb_function *f; struct usb_function *tmp; struct gadget_config_name *cn; + unsigned long ep_map = 0; if (gadget_is_otg(gadget)) c->descriptors = otg_desc; @@ -1403,7 +1404,28 @@ static int configfs_composite_bind(struct usb_gadget *gadget, list_add(&f->list, &cfg->func_list); goto err_purge_funcs; } + if (f->fs_descriptors) { + struct usb_descriptor_header **d; + + d = f->fs_descriptors; + for (; *d; ++d) { + struct usb_endpoint_descriptor *ep; + int addr; + + if ((*d)->bDescriptorType != USB_DT_ENDPOINT) + continue; + + ep = (struct usb_endpoint_descriptor *)*d; + addr = ((ep->bEndpointAddress & 0x80) >> 3) | + (ep->bEndpointAddress & 0x0f); + set_bit(addr, &ep_map); + } + } } + ret = usb_gadget_check_config(cdev->gadget, ep_map); + if (ret) + goto err_purge_funcs; + usb_ep_autoconfig_reset(cdev->gadget); } if (cdev->use_os_string) { -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project