Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp1984452iob; Thu, 19 May 2022 21:43:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz3lMnuzbxEi4I4qUk47/q+EpyABRRo3Hg8aXuX+0W8+7sOAtHI3SZife5Kj38zAYj0I0oI X-Received: by 2002:a17:90a:4803:b0:1dc:b4c9:1958 with SMTP id a3-20020a17090a480300b001dcb4c91958mr9282306pjh.61.1653021808918; Thu, 19 May 2022 21:43:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653021808; cv=none; d=google.com; s=arc-20160816; b=BZR+kL2k3c18XrhMtMJHhCkoP97ctbi7VnRNjIDnA2MhuJBT7nBBFrAdogLWOsZyOD c2/Jxw2lufTYEIfsPVINRMgT+gYGPUHx9noGcRx+TxjYK53aW8SOGEzh3Rs8Dva3UjHJ xbmvni0hv+wPa8N3u4/7E/SU6VXd4uqaW8uTYU00sUYq6QqUQUrAjvjvs/GGBJ9vc6zl xp+NzB1ka8gnauhokzQTw+Xy/xp7gFGwNVMaiZyhutl9eETE67wPWPujAbbsfV+JIMIH 2JNvkG37k56duZmEWmfSS9YjkZHdHDuqYgksh6axhrTPwfawxV12RahLdVXTvrJCWPZq 0qJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=MJUI5/KGXKxPNkARH2y8YWHJhfyRq0RKcNacoeJXQSM=; b=EFzz2ooZrVn1U2U7hMMyPIy8dwLToTeJHF7AyWSZfBrKNN2xhbxFQt/Zemb5U3wFIM +8gBp9vI4g0XQZFLgJLDS9Ihds1MXunSH/cB5ZrUEF2eNJTf0hsnxSaC5ueEuVBPu/7k 5YqWZnFSyDb9HbrjJxxxzpMRKwekCFrAjUlTHS2eGVwjRkfKTmNttOD/jAWg1de8GZfZ nyrrgWfQyeePCQMQALm74YocywJXgwh5ldiYY5dG2ere1EuX0MlJV6eYckJAQA/ZlWXA Bct7VxGZAYpRttJlBp8R1oGfxeRWOQs+mY5RIg8rbZp1shSHM0YnCrpZe5v8cU/2wz3t cywA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t35-20020a056a0013a300b004faa79d798bsi1828645pfg.27.2022.05.19.21.43.13; Thu, 19 May 2022 21:43:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239051AbiESNx3 (ORCPT + 99 others); Thu, 19 May 2022 09:53:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38194 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239235AbiESNum (ORCPT ); Thu, 19 May 2022 09:50:42 -0400 Received: from netrider.rowland.org (netrider.rowland.org [192.131.102.5]) by lindbergh.monkeyblade.net (Postfix) with SMTP id 3DF21A5A87 for ; Thu, 19 May 2022 06:50:18 -0700 (PDT) Received: (qmail 223673 invoked by uid 1000); 19 May 2022 09:49:30 -0400 Date: Thu, 19 May 2022 09:49:30 -0400 From: Alan Stern To: Dmytro Bagrii Cc: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] usb: core: Call disconnect() only if it is provided by driver Message-ID: References: <20220519132900.4392-1-dimich.dmb@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220519132900.4392-1-dimich.dmb@gmail.com> X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, May 19, 2022 at 04:29:00PM +0300, Dmytro Bagrii wrote: > A driver may use devres allocations. Disconnect handler is not needed in > this case. Allow such driver to leave .disconnect field uninitialized in > struct usb_driver instead of providing empty stub function. > > Signed-off-by: Dmytro Bagrii > --- > drivers/usb/core/driver.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c > index 355ed33a2179..d7fe440b033c 100644 > --- a/drivers/usb/core/driver.c > +++ b/drivers/usb/core/driver.c > @@ -455,7 +455,8 @@ static int usb_unbind_interface(struct device *dev) > if (!driver->soft_unbind || udev->state == USB_STATE_NOTATTACHED) > usb_disable_interface(udev, intf, false); > > - driver->disconnect(intf); > + if (driver->disconnect) > + driver->disconnect(intf); > > /* Free streams */ > for (i = 0, j = 0; i < intf->cur_altsetting->desc.bNumEndpoints; i++) { I'm very dubious about this change. Disconnect routines generally do more than just deallocation. Can you point to any drivers that would actually benefit from this? Alan Stern