Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1722827pxj; Wed, 19 May 2021 12:20:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwWS3GBVFNb3HJh8888B9yXjJLarFvVMURZajLi6XYRDxRHJuPWDRrh/dAOR44SUYZVWKXS X-Received: by 2002:a17:906:54f:: with SMTP id k15mr708195eja.239.1621452041124; Wed, 19 May 2021 12:20:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621452041; cv=none; d=google.com; s=arc-20160816; b=SH+kFBQxfGK/yMMGqVg6ynucq5KdFKuJV8sybTo+ELSb4mAC8vTjhkiNticErBf8+o etYr7UQGazpahm9fwlOSl22WtlfjL6C++gd6T0kVhR7D676CK8wefwPwiPSzFp1IdZ+I S3GcMxmb00I2GGaWy6kr34ng6eWRAvm5Vmpc+fkJqeJm2pdhArufU7xsG7tGGGu6Ul+I qa0lQBxLgMHz13ubqpux1TiLwLiXFvzIaq5t/NPu3tGhiUUEk6lj0wOx0CNCOG3nQRb6 i84Y1IvumJjPH5cN3TXujnDhxihEjq1bK6dy+zFbC7nCC3sFInTyVyE4bNRBJTpt0KhG kZRQ== 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=udIeA6SeJbzVSc7KOJeBB5UDWqt4F6fq+b7eWRvXnsn3VnRhbUY87hTaKcwsgw4Od4 /0kDHU+AFusC8P87fL1bnFOBVbZuGqQpoegDuaNxNGAGcOIAHCdugvUojGuc1oqDnte+ UHtXnFjvNWNqr/iut6CcVZ5zUhImf2eDw+7i3eUGMyfrqMMl8mZOqTCV1UpQP1XktyUv hxny37vc5fxQWhaaCfe4s8ikirElKvCsHG0mmL/tfEeI5vlamliBOiSadaZlP+4ziOom SVKAhh9yl88piHwYtqtqjEU3G+xHLGCtfuYxsCwxasM7Nl4tH1LbRq6mFhVBZfSU5gzI AJLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=X1+zG4kR; 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 gq9si502750ejb.720.2021.05.19.12.20.15; Wed, 19 May 2021 12:20:41 -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=X1+zG4kR; 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 S241307AbhESHpa (ORCPT + 99 others); Wed, 19 May 2021 03:45:30 -0400 Received: from so254-9.mailgun.net ([198.61.254.9]:11727 "EHLO so254-9.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240845AbhESHpZ (ORCPT ); Wed, 19 May 2021 03:45:25 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1621410246; h=References: In-Reply-To: Message-Id: Date: Subject: Cc: To: From: Sender; bh=2LHgsP9c4Sin2+nziX6odnlML8co8g8QWj7JMVhPh6c=; b=X1+zG4kRjcGTrUR8EiCjuVYE1Ui4gYKZniZISieigjGJfD/3mU4Ju19t6+yFGsrhoIxx8fK0 IY3lBKYygy076rUpOvzhmzs94XamJs6CW31NMBmKVySMRWMGv7zbTjumWVUDhpEA8aTpJWZI krSrnNiiAK0kGgH6wdjiX5Mvpo0= 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-n02.prod.us-east-1.postgun.com with SMTP id 60a4c1c48dd30e785fa42299 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Wed, 19 May 2021 07:44:04 GMT Sender: wcheng=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 16693C43460; Wed, 19 May 2021 07:44:04 +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, URIBL_BLOCKED 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 1995EC4338A; Wed, 19 May 2021 07:44:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 1995EC4338A 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, agross@kernel.org, bjorn.andersson@linaro.org, robh+dt@kernel.org Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, jackp@codeaurora.org, Thinh.Nguyen@synopsys.com, Wesley Cheng Subject: [PATCH v8 2/5] usb: gadget: configfs: Check USB configuration before adding Date: Wed, 19 May 2021 00:43:55 -0700 Message-Id: <1621410238-31395-3-git-send-email-wcheng@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1621410238-31395-1-git-send-email-wcheng@codeaurora.org> References: <1621410238-31395-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