From patchwork Fri Mar 31 09:33:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 77693 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp439714vqo; Fri, 31 Mar 2023 02:49:49 -0700 (PDT) X-Google-Smtp-Source: AKy350YhOEcFA4IuNXIddEuVKmoJT5CGIWz29R03+uq5jA4NRplppr8Ot8M/vgHLqtD6OEGVIqGm X-Received: by 2002:a17:906:dfe4:b0:930:3916:df19 with SMTP id lc4-20020a170906dfe400b009303916df19mr25815221ejc.5.1680256189218; Fri, 31 Mar 2023 02:49:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680256189; cv=none; d=google.com; s=arc-20160816; b=xFhXMz+MeDcvuhEjVnBiFab2p1sfLqamQ3yCp+OD3/48Zyc17TMdAggVt8GNCXleNR lqP+G3gCBixBg/GIVlD7hKceCMBna5X9Mg+kuhWM5nxQ1ZCLj/pv0dWChbhw5LTeSGEO mzcCSGI4sC081DgO8Ai/Jc4fgStUXmXz3VuiaYZfEEwF6FbZTHpqGb9BXdFz6tkUWKjC N3TbpCR+rq1C5Ke/z/P5YIrZ5Z+9qjBmmeYRaKRUphoxYaHBlhRroQC+WR49RhPe5YO5 aQaDWGpiDREJRa+VTrDgAmwGIl9bHyjK5nQX1QAU/MDqSBHUREItSDnCMOYPrYG8VHPt REMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=N1T2PVfrAOA+gSShDcUKeCzcFOdau6kWp7csPVG89Bc=; b=GMuGNpKf1QBjHLFzoAtQtLDtsLcTC444NwhGyEgue3fEZjJpNWBBkW23VCsABe9mTF f3PB6N3lrStztdON4EN6iVkQTIiVqSIXKJBagQE6ISL7je9K6ckZC224X+2rAwE5ZYlf rB6BjrOdS1lvVbLCIASjxrAi7gupG/5N2fT3K3JCwjYOH8srhkhFa/lyU8u1ESlpDFDC /bDn/GcQGAbqoO8iM/OhwynNa9ua+zxRLDpkmCb9H6a5hjJbLx6+zyfWRcaybg8eyvJr KAV6A1HmLfsSBrIxEACXqciBDPVWBFwIyvIsUzMu3PiE/TQRFCra2vvF72tsta1MTsTy 0ltA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=tUoX9AZ+; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gt17-20020a170906f21100b009313e7b7273si1729429ejb.649.2023.03.31.02.49.25; Fri, 31 Mar 2023 02:49:49 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=tUoX9AZ+; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232307AbjCaJeT (ORCPT + 99 others); Fri, 31 Mar 2023 05:34:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232073AbjCaJd6 (ORCPT ); Fri, 31 Mar 2023 05:33:58 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9B8131DFBB for ; Fri, 31 Mar 2023 02:33:32 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 90FE562434 for ; Fri, 31 Mar 2023 09:33:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A4B65C433D2; Fri, 31 Mar 2023 09:33:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1680255207; bh=WdGhtuuB6EG9ZfTx5rpmnXzxWjKavUFASmsUKFniNps=; h=From:To:Cc:Subject:Date:From; b=tUoX9AZ+8jNdRUJS6qgQ1XL2SVsGoIe+RingtzA4BfqK3Nx23A9MBznaXdEsp01Om 2xq+V20t5JSQm/RucK0xIZe0BXAcY9yY7FeZrIrieHSeyRHI6m8EzfMT7asBQTZtLU NuBCJC1H4qtsQBSTCvjkFJmS/SFiZ9AQFXjylIa8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" Subject: [PATCH 1/7] driver core: core: move to use class_to_subsys() Date: Fri, 31 Mar 2023 11:33:12 +0200 Message-Id: <20230331093318.82288-1-gregkh@linuxfoundation.org> X-Mailer: git-send-email 2.40.0 MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=10384; i=gregkh@linuxfoundation.org; h=from:subject; bh=WdGhtuuB6EG9ZfTx5rpmnXzxWjKavUFASmsUKFniNps=; b=owGbwMvMwCRo6H6F97bub03G02pJDClqK27xcSy4FXveJ23KZeEDiv/+/OLVOGgndvh8y4+MP VbqR02Od8SyMAgyMciKKbJ82cZzdH/FIUUvQ9vTMHNYmUCGMHBxCsBEvr1kmJ+W+yRiGavgzz/b XkX/idP63trilM8wz5wpx/jjrB6luT3J+geU+++yiEjfBwA= X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 X-Spam-Status: No, score=-2.5 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761876314095521990?= X-GMAIL-MSGID: =?utf-8?q?1761876314095521990?= There are a number of places in core.c that need access to the private subsystem structure of struct class, so move them to use class_to_subsys() instead of accessing it directly. This requires exporting class_to_subsys() out of class.c, but keeping it local to the driver core. Cc: "Rafael J. Wysocki" Signed-off-by: Greg Kroah-Hartman Reviewed-by: Rafael J. Wysocki --- drivers/base/base.h | 2 + drivers/base/class.c | 2 +- drivers/base/core.c | 121 ++++++++++++++++++++++++++++--------------- 3 files changed, 81 insertions(+), 44 deletions(-) diff --git a/drivers/base/base.h b/drivers/base/base.h index 2867ca4ee4ce..6296164bb7f3 100644 --- a/drivers/base/base.h +++ b/drivers/base/base.h @@ -73,6 +73,8 @@ static inline void subsys_put(struct subsys_private *sp) kset_put(&sp->subsys); } +struct subsys_private *class_to_subsys(const struct class *class); + struct driver_private { struct kobject kobj; struct klist klist_devices; diff --git a/drivers/base/class.c b/drivers/base/class.c index 1f12bd5d56d9..68a6f9b56d19 100644 --- a/drivers/base/class.c +++ b/drivers/base/class.c @@ -39,7 +39,7 @@ static struct kset *class_kset; * NULL. A call to subsys_put() must be done when finished with the pointer in * order for it to be properly freed. */ -static struct subsys_private *class_to_subsys(const struct class *class) +struct subsys_private *class_to_subsys(const struct class *class) { struct subsys_private *sp = NULL; struct kobject *kobj; diff --git a/drivers/base/core.c b/drivers/base/core.c index 89249be22161..e3bc34fcf779 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -3149,8 +3149,8 @@ static const struct kobj_type class_dir_ktype = { .child_ns_type = class_dir_child_ns_type }; -static struct kobject * -class_dir_create_and_add(const struct class *class, struct kobject *parent_kobj) +static struct kobject *class_dir_create_and_add(struct subsys_private *sp, + struct kobject *parent_kobj) { struct class_dir *dir; int retval; @@ -3159,12 +3159,12 @@ class_dir_create_and_add(const struct class *class, struct kobject *parent_kobj) if (!dir) return ERR_PTR(-ENOMEM); - dir->class = class; + dir->class = sp->class; kobject_init(&dir->kobj, &class_dir_ktype); - dir->kobj.kset = &class->p->glue_dirs; + dir->kobj.kset = &sp->glue_dirs; - retval = kobject_add(&dir->kobj, parent_kobj, "%s", class->name); + retval = kobject_add(&dir->kobj, parent_kobj, "%s", sp->class->name); if (retval < 0) { kobject_put(&dir->kobj); return ERR_PTR(retval); @@ -3177,9 +3177,10 @@ static DEFINE_MUTEX(gdp_mutex); static struct kobject *get_device_parent(struct device *dev, struct device *parent) { + struct subsys_private *sp = class_to_subsys(dev->class); struct kobject *kobj = NULL; - if (dev->class) { + if (sp) { struct kobject *parent_kobj; struct kobject *k; @@ -3190,30 +3191,34 @@ static struct kobject *get_device_parent(struct device *dev, */ if (parent == NULL) parent_kobj = virtual_device_parent(dev); - else if (parent->class && !dev->class->ns_type) + else if (parent->class && !dev->class->ns_type) { + subsys_put(sp); return &parent->kobj; - else + } else { parent_kobj = &parent->kobj; + } mutex_lock(&gdp_mutex); /* find our class-directory at the parent and reference it */ - spin_lock(&dev->class->p->glue_dirs.list_lock); - list_for_each_entry(k, &dev->class->p->glue_dirs.list, entry) + spin_lock(&sp->glue_dirs.list_lock); + list_for_each_entry(k, &sp->glue_dirs.list, entry) if (k->parent == parent_kobj) { kobj = kobject_get(k); break; } - spin_unlock(&dev->class->p->glue_dirs.list_lock); + spin_unlock(&sp->glue_dirs.list_lock); if (kobj) { mutex_unlock(&gdp_mutex); + subsys_put(sp); return kobj; } /* or create a new class-directory at the parent device */ - k = class_dir_create_and_add(dev->class, parent_kobj); + k = class_dir_create_and_add(sp, parent_kobj); /* do not emit an uevent for this simple "glue" directory */ mutex_unlock(&gdp_mutex); + subsys_put(sp); return k; } @@ -3236,10 +3241,23 @@ static struct kobject *get_device_parent(struct device *dev, static inline bool live_in_glue_dir(struct kobject *kobj, struct device *dev) { - if (!kobj || !dev->class || - kobj->kset != &dev->class->p->glue_dirs) + struct subsys_private *sp; + bool retval; + + if (!kobj || !dev->class) return false; - return true; + + sp = class_to_subsys(dev->class); + if (!sp) + return false; + + if (kobj->kset == &sp->glue_dirs) + retval = true; + else + retval = false; + + subsys_put(sp); + return retval; } static inline struct kobject *get_glue_dir(struct device *dev) @@ -3336,6 +3354,7 @@ static void cleanup_glue_dir(struct device *dev, struct kobject *glue_dir) static int device_add_class_symlinks(struct device *dev) { struct device_node *of_node = dev_of_node(dev); + struct subsys_private *sp; int error; if (of_node) { @@ -3345,12 +3364,11 @@ static int device_add_class_symlinks(struct device *dev) /* An error here doesn't warrant bringing down the device */ } - if (!dev->class) + sp = class_to_subsys(dev->class); + if (!sp) return 0; - error = sysfs_create_link(&dev->kobj, - &dev->class->p->subsys.kobj, - "subsystem"); + error = sysfs_create_link(&dev->kobj, &sp->subsys.kobj, "subsystem"); if (error) goto out_devnode; @@ -3362,35 +3380,37 @@ static int device_add_class_symlinks(struct device *dev) } /* link in the class directory pointing to the device */ - error = sysfs_create_link(&dev->class->p->subsys.kobj, - &dev->kobj, dev_name(dev)); + error = sysfs_create_link(&sp->subsys.kobj, &dev->kobj, dev_name(dev)); if (error) goto out_device; - - return 0; + goto exit; out_device: sysfs_remove_link(&dev->kobj, "device"); - out_subsys: sysfs_remove_link(&dev->kobj, "subsystem"); out_devnode: sysfs_remove_link(&dev->kobj, "of_node"); +exit: + subsys_put(sp); return error; } static void device_remove_class_symlinks(struct device *dev) { + struct subsys_private *sp = class_to_subsys(dev->class); + if (dev_of_node(dev)) sysfs_remove_link(&dev->kobj, "of_node"); - if (!dev->class) + if (!sp) return; if (dev->parent && device_is_not_partition(dev)) sysfs_remove_link(&dev->kobj, "device"); sysfs_remove_link(&dev->kobj, "subsystem"); - sysfs_delete_link(&dev->class->p->subsys.kobj, &dev->kobj, dev_name(dev)); + sysfs_delete_link(&sp->subsys.kobj, &dev->kobj, dev_name(dev)); + subsys_put(sp); } /** @@ -3499,6 +3519,7 @@ static int device_private_init(struct device *dev) */ int device_add(struct device *dev) { + struct subsys_private *sp; struct device *parent; struct kobject *kobj; struct class_interface *class_intf; @@ -3627,18 +3648,18 @@ int device_add(struct device *dev) klist_add_tail(&dev->p->knode_parent, &parent->p->klist_children); - if (dev->class) { - mutex_lock(&dev->class->p->mutex); + sp = class_to_subsys(dev->class); + if (sp) { + mutex_lock(&sp->mutex); /* tie the class to the device */ - klist_add_tail(&dev->p->knode_class, - &dev->class->p->klist_devices); + klist_add_tail(&dev->p->knode_class, &sp->klist_devices); /* notify any interfaces that the device is here */ - list_for_each_entry(class_intf, - &dev->class->p->interfaces, node) + list_for_each_entry(class_intf, &sp->interfaces, node) if (class_intf->add_dev) class_intf->add_dev(dev, class_intf); - mutex_unlock(&dev->class->p->mutex); + mutex_unlock(&sp->mutex); + subsys_put(sp); } done: put_device(dev); @@ -3758,6 +3779,7 @@ EXPORT_SYMBOL_GPL(kill_device); */ void device_del(struct device *dev) { + struct subsys_private *sp; struct device *parent = dev->parent; struct kobject *glue_dir = NULL; struct class_interface *class_intf; @@ -3784,18 +3806,20 @@ void device_del(struct device *dev) device_remove_sys_dev_entry(dev); device_remove_file(dev, &dev_attr_dev); } - if (dev->class) { + + sp = class_to_subsys(dev->class); + if (sp) { device_remove_class_symlinks(dev); - mutex_lock(&dev->class->p->mutex); + mutex_lock(&sp->mutex); /* notify any interfaces that the device is now gone */ - list_for_each_entry(class_intf, - &dev->class->p->interfaces, node) + list_for_each_entry(class_intf, &sp->interfaces, node) if (class_intf->remove_dev) class_intf->remove_dev(dev, class_intf); /* remove the device from the class list */ klist_del(&dev->p->knode_class); - mutex_unlock(&dev->class->p->mutex); + mutex_unlock(&sp->mutex); + subsys_put(sp); } device_remove_file(dev, &dev_attr_uevent); device_remove_attrs(dev); @@ -4458,9 +4482,16 @@ int device_rename(struct device *dev, const char *new_name) } if (dev->class) { - error = sysfs_rename_link_ns(&dev->class->p->subsys.kobj, - kobj, old_device_name, + struct subsys_private *sp = class_to_subsys(dev->class); + + if (!sp) { + error = -EINVAL; + goto out; + } + + error = sysfs_rename_link_ns(&sp->subsys.kobj, kobj, old_device_name, new_name, kobject_namespace(kobj)); + subsys_put(sp); if (error) goto out; } @@ -4643,6 +4674,7 @@ int device_change_owner(struct device *dev, kuid_t kuid, kgid_t kgid) { int error; struct kobject *kobj = &dev->kobj; + struct subsys_private *sp; dev = get_device(dev); if (!dev) @@ -4685,10 +4717,13 @@ int device_change_owner(struct device *dev, kuid_t kuid, kgid_t kgid) * directory entry for @dev to @kuid/@kgid. This ensures that the * symlink shows the same permissions as its target. */ - error = sysfs_link_change_owner(&dev->class->p->subsys.kobj, &dev->kobj, - dev_name(dev), kuid, kgid); - if (error) + sp = class_to_subsys(dev->class); + if (!sp) { + error = -EINVAL; goto out; + } + error = sysfs_link_change_owner(&sp->subsys.kobj, &dev->kobj, dev_name(dev), kuid, kgid); + subsys_put(sp); out: put_device(dev); From patchwork Fri Mar 31 09:33:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 77684 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp437537vqo; Fri, 31 Mar 2023 02:44:49 -0700 (PDT) X-Google-Smtp-Source: AKy350Z2UwQjhQsCpvWgL8lRTzto7lmtk2r67RS3OdxAIhha7vT2PJEkYWaFOqHomwFgRPUIgab9 X-Received: by 2002:aa7:cb02:0:b0:502:23a0:3fd2 with SMTP id s2-20020aa7cb02000000b0050223a03fd2mr22015494edt.9.1680255889032; Fri, 31 Mar 2023 02:44:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680255889; cv=none; d=google.com; s=arc-20160816; b=o/7GbPabsgLZ9H2gna2nVTvM8vTH+X26knphaTcR3Q8/CxB3Oezt/hhMcrN+6chBFP If0zRwylt/eJgeseb7IXlL/DJVle1+G0cSBZ2dVSXH8r3ST22MFkfbI6RxAZqxN+4bYH QbZ1/NMp4Y8SELK95axUVnyA8f4RyR6s2H25jnYUVm8z9FvKNSBl5lnCycgjU2RFy2d9 mCDtCwIS2cjFj/gc6Y18AEWLdqZC5aqBTTh0FxizmfS1ZjesBve3cT4pVm9DaM6jpXdA 4992bjvREA4gZQ3VzxoIt2nuw2eAUEZQWmrM8khhgAtUa+YwP2XvAxECpfbWhNHKf8F6 VEfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=cwsOywKFnAVO9FDnCBvaLQ4SY70L8gkxhz0G6UrLAXY=; b=meLFoQ/NnoK6jKGhq3QRfgcAPKIaodu0/NY0OTmsxH/Ch5IT9i7eiQc9xWjed6xCQh Tr9ijNO3XuRfH7LhHF3ii52W/dF1zkI97h7O/cW5pVsGuyS+LeJDM/zZ9ODl4+rEscQf EAcV7oGgZeZ81HkANFUWxTnMeKQevmSE7Z34gaG6LmONMOENzk8vdbaY9zCp3M5roCQj cyV+/TlCADuA9rvrdSEceaM7x8QcUqjP1cqbXQaCO/bo/RqDvErzGDpUYY2wgjlZ6z1u 8Mmz/DmCf5UYx0MyKofLB8wkglawNsC3OX11QQw6c7wby/2sOILoLriOiMTS+Nl4AhVg rNxw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="2Racua//"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t10-20020aa7d4ca000000b004aef1baf38asi1571342edr.96.2023.03.31.02.44.26; Fri, 31 Mar 2023 02:44:49 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="2Racua//"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230160AbjCaJeN (ORCPT + 99 others); Fri, 31 Mar 2023 05:34:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42334 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232131AbjCaJd5 (ORCPT ); Fri, 31 Mar 2023 05:33:57 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A54D44EC9; Fri, 31 Mar 2023 02:33:27 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 9303CB82DB3; Fri, 31 Mar 2023 09:33:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D23B9C433D2; Fri, 31 Mar 2023 09:33:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1680255204; bh=72mzuO04L3PUk9aLCOXDvsit2zTzKDWhSwQULIrm2dg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=2Racua//Q7UDpfBF96lbadzS4b0GO6n85LayT00ZPbmGfYsxeO/GNyrTILknk4WWk 53tLe2c6OPQiNsQ37NnQAcRDAYXEHrZopBKV8o1MujN+nOybKjqCGaCQ5yq2f+zjVN YDqnPhLO5pkpeEVpm6LyU5gOEpKvosiUVDKwodwo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , Linus Walleij , Bartosz Golaszewski , Sebastian Reichel , Benjamin Tissoires , linux-gpio@vger.kernel.org, "Rafael J. Wysocki" Subject: [PATCH 2/7] driver core: create class_is_registered() Date: Fri, 31 Mar 2023 11:33:13 +0200 Message-Id: <20230331093318.82288-2-gregkh@linuxfoundation.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230331093318.82288-1-gregkh@linuxfoundation.org> References: <20230331093318.82288-1-gregkh@linuxfoundation.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3679; i=gregkh@linuxfoundation.org; h=from:subject; bh=72mzuO04L3PUk9aLCOXDvsit2zTzKDWhSwQULIrm2dg=; b=owGbwMvMwCRo6H6F97bub03G02pJDClqK+6c83t86uvFnEWSap/cVvBrx5nnSOgvVeJJ/r860 prZ4cr1jlgWBkEmBlkxRZYv23iO7q84pOhlaHsaZg4rE8gQBi5OAZjIy2MM8+N+PvoguP1DQNrn 2SdOX/IRs5vEycQw33f6p/6ZprF2J75UyvNUz91+0GWuJwA= X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 X-Spam-Status: No, score=-2.5 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761875999094851921?= X-GMAIL-MSGID: =?utf-8?q?1761875999094851921?= Some classes (i.e. gpio), want to know if they have been registered or not, and poke around in the class's internal structures to try to figure this out. Because this is not really a good idea, provide a function for classes to call to try to figure this out. Note, this is racy as the state of the class could change at any moment in time after the call is made, but as usually a class only wants to know if it has been registered yet or not, it should be fairly safe to use, and is just as safe as the previous "poke at the class internals" check was. Move the gpiolib code to use this function as proof that it works properly. Cc: Linus Walleij Cc: Bartosz Golaszewski Cc: Sebastian Reichel Cc: Benjamin Tissoires Cc: linux-gpio@vger.kernel.org Cc: "Rafael J. Wysocki" Signed-off-by: Greg Kroah-Hartman Reviewed-by: Rafael J. Wysocki Reviewed-by: Linus Walleij --- drivers/base/class.c | 25 +++++++++++++++++++++++++ drivers/gpio/gpiolib-sysfs.c | 4 ++-- include/linux/device/class.h | 1 + 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/drivers/base/class.c b/drivers/base/class.c index 68a6f9b56d19..a8a1bf976290 100644 --- a/drivers/base/class.c +++ b/drivers/base/class.c @@ -634,6 +634,31 @@ void class_compat_remove_link(struct class_compat *cls, struct device *dev, } EXPORT_SYMBOL_GPL(class_compat_remove_link); +/** + * class_is_registered - determine if at this moment in time, a class is + * registered in the driver core or not. + * @class: the class to check + * + * Returns a boolean to state if the class is registered in the driver core + * or not. Note that the value could switch right after this call is made, + * so only use this in places where you "know" it is safe to do so (usually + * to determine if the specific class has been registered yet or not). + * + * Be careful in using this. + */ +bool class_is_registered(const struct class *class) +{ + struct subsys_private *sp = class_to_subsys(class); + bool is_initialized = false; + + if (sp) { + is_initialized = true; + subsys_put(sp); + } + return is_initialized; +} +EXPORT_SYMBOL_GPL(class_is_registered); + int __init classes_init(void) { class_kset = kset_create_and_add("class", NULL, NULL); diff --git a/drivers/gpio/gpiolib-sysfs.c b/drivers/gpio/gpiolib-sysfs.c index a895915affa5..1a9b21731cc9 100644 --- a/drivers/gpio/gpiolib-sysfs.c +++ b/drivers/gpio/gpiolib-sysfs.c @@ -554,7 +554,7 @@ int gpiod_export(struct gpio_desc *desc, bool direction_may_change) int offset; /* can't export until sysfs is available ... */ - if (!gpio_class.p) { + if (!class_is_registered(&gpio_class)) { pr_debug("%s: called too early!\n", __func__); return -ENOENT; } @@ -728,7 +728,7 @@ int gpiochip_sysfs_register(struct gpio_device *gdev) * register later, in gpiolib_sysfs_init() ... here we just * verify that _some_ field of gpio_class got initialized. */ - if (!gpio_class.p) + if (!class_is_registered(&gpio_class)) return 0; /* diff --git a/include/linux/device/class.h b/include/linux/device/class.h index b53728ca56fb..9cb5db0588c8 100644 --- a/include/linux/device/class.h +++ b/include/linux/device/class.h @@ -84,6 +84,7 @@ extern struct kobject *sysfs_dev_block_kobj; int __must_check class_register(struct class *class); void class_unregister(const struct class *class); +bool class_is_registered(const struct class *class); struct class_compat; struct class_compat *class_compat_register(const char *name); From patchwork Fri Mar 31 09:33:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 77683 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp437483vqo; Fri, 31 Mar 2023 02:44:42 -0700 (PDT) X-Google-Smtp-Source: AKy350abAQQwrP04450WNRyh9N3vXmtBnB1eFLQeIOmFqhMwHhQmg5dTOjNElOB62cPBWwS8amIY X-Received: by 2002:a17:907:9627:b0:947:40e6:fde4 with SMTP id gb39-20020a170907962700b0094740e6fde4mr7349390ejc.2.1680255882138; Fri, 31 Mar 2023 02:44:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680255882; cv=none; d=google.com; s=arc-20160816; b=tvLckF7TGvteqGcdlm0n/DNAbBiOva6tdtKRv8ffZuJvff4JT34vv3GpoOozb17P9A Oz8rNU+PlTupV4BRxwaYAcT/E//xWzo+xx+9OaDKZ/oLXfyik9ZAXeaVP6/BqaKuZPSR FxiSt5GCiN/w//KG9pL9ciQlvZrZ8yKNqkqPZ6M8yc9srqyFeQ/o1D99Lw2I/lES8NhD u7bBqgomrdAJlKtt9fQtWG/gbUyZvFknDLuXZMpPZxtcWMbR6P/F+icdAWi2r84PsDiM ZkQwInJ9AT19Hna3Z3d+cAlkyWvHR1Xm9mjjAQU1OlHvFS5gSvN/brB2jTEYseqadDaC 9Zbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=QWcZwZWTALIbzkuj5bNVjq2eAZ6tXDyHq998Z+Mlnbs=; b=SD/xhZUWfB+ptGkiRg0QVmo+V6sT6HDxPOQ+36PEN5qebkyUCkb8CVuZDe+vEUmrg3 cqu5r7IhmiKfzsXFAnTpJ98XrFhCC6/Y8N68froD42PIu1K4n9PITXva5owYLqwVl2Ty GD3BzH6ygSO83DmYHwlMnh6dayUXGxBjvrav1pUIvEiY6OHh9vLd/TdJRE/XvJhtt3yk +bZ7+y5JrqRTxAGNCMSoq4kmLqTgCUpuJH2ye7nCnFcRKPEwADubBfm6GDoEjYfhkidu 5lt9LJmn6fF62JOyclQEdlj8c72ExEL6QV90oUwqNRvF9dplsyZgTu8q6NckUULn88XR lM8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=bRO3vsYs; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id lt24-20020a170906fa9800b00927130f010esi1466059ejb.58.2023.03.31.02.44.19; Fri, 31 Mar 2023 02:44:42 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=bRO3vsYs; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231365AbjCaJed (ORCPT + 99 others); Fri, 31 Mar 2023 05:34:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38718 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230444AbjCaJeI (ORCPT ); Fri, 31 Mar 2023 05:34:08 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E67F51EA23 for ; Fri, 31 Mar 2023 02:33:37 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id C2476B82D7C for ; Fri, 31 Mar 2023 09:33:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A2EEC433D2; Fri, 31 Mar 2023 09:33:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1680255212; bh=cG2nXhJrWKrDIwvw+gSEk9fxnRVDM8TBTZRetku5/tE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bRO3vsYsc5CcSBOAQcpEnD60o0CZkMqi9Rd+btz2vALjxImFFaafm8DFBdU1LLaKq 96+Yd7JusWfOT+5J8R8Ef1UcStaZ9g8E6CmIqce8hlToVkiW7+rTuQVjvByZsnfN5O j4/yUtcX63dOLEod2oH91gnBsVtehFwTWlhf54I0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" Subject: [PATCH 3/7] driver core: class: remove subsystem private pointer from struct class Date: Fri, 31 Mar 2023 11:33:14 +0200 Message-Id: <20230331093318.82288-3-gregkh@linuxfoundation.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230331093318.82288-1-gregkh@linuxfoundation.org> References: <20230331093318.82288-1-gregkh@linuxfoundation.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1634; i=gregkh@linuxfoundation.org; h=from:subject; bh=cG2nXhJrWKrDIwvw+gSEk9fxnRVDM8TBTZRetku5/tE=; b=owGbwMvMwCRo6H6F97bub03G02pJDClqK+5myDzteeM6I6R0XoU8c92GquySFl4eoZr5aaqHV nH/kUvviGVhEGRikBVTZPmyjefo/opDil6Gtqdh5rAygQxh4OIUgIlYBjIs6FudsDxL9fZ90R/u XY/MA1Uinrf1MczPMnG/FZaWdaWcN5f1UrPQZZ+tXbUA X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 X-Spam-Status: No, score=-2.5 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761875991688627335?= X-GMAIL-MSGID: =?utf-8?q?1761875991688627335?= Now that the last users of the subsystem private pointer in struct class are gone, the pointer can be removed, as no one is using it. One step closer to allowing struct class to be const and moved into read-only memory. Cc: "Rafael J. Wysocki" Signed-off-by: Greg Kroah-Hartman Acked-by: Rafael J. Wysocki --- drivers/base/class.c | 4 ---- include/linux/device/class.h | 2 -- 2 files changed, 6 deletions(-) diff --git a/drivers/base/class.c b/drivers/base/class.c index a8a1bf976290..fcfb295363cc 100644 --- a/drivers/base/class.c +++ b/drivers/base/class.c @@ -97,8 +97,6 @@ static void class_release(struct kobject *kobj) pr_debug("class '%s': release.\n", class->name); - class->p = NULL; - if (class->class_release) class->class_release(class); else @@ -206,7 +204,6 @@ int class_register(struct class *cls) cp->subsys.kobj.kset = class_kset; cp->subsys.kobj.ktype = &class_ktype; cp->class = cls; - cls->p = cp; error = kset_register(&cp->subsys); if (error) @@ -222,7 +219,6 @@ int class_register(struct class *cls) err_out: kfree(cp); - cls->p = NULL; return error; } EXPORT_SYMBOL_GPL(class_register); diff --git a/include/linux/device/class.h b/include/linux/device/class.h index 9cb5db0588c8..f7aad64e256a 100644 --- a/include/linux/device/class.h +++ b/include/linux/device/class.h @@ -71,8 +71,6 @@ struct class { void (*get_ownership)(const struct device *dev, kuid_t *uid, kgid_t *gid); const struct dev_pm_ops *pm; - - struct subsys_private *p; }; struct class_dev_iter { From patchwork Fri Mar 31 09:33:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 77700 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp440770vqo; Fri, 31 Mar 2023 02:52:20 -0700 (PDT) X-Google-Smtp-Source: AK7set+hRznCawzrCwTneikI4gLIBj3FMfqVSR/7e/PAsF0TBBpOr229CC+H3UYxoD0UVIHOX5J2 X-Received: by 2002:a05:6a20:4fa3:b0:c7:6f26:ca0 with SMTP id gh35-20020a056a204fa300b000c76f260ca0mr19193584pzb.54.1680256340594; Fri, 31 Mar 2023 02:52:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680256340; cv=none; d=google.com; s=arc-20160816; b=MCUc49f9kfx/WZBgkx16i+BZw/W9wqCsZVLhJ1uUq6hxr2sBeMCe3HtazxL5LDiuNc jgmLoexGMxWTw2B6FEC9YjmDgxh3XbJsarnotq0sWyslQpXS8AC26a95q2A02FvwmUHo dhp3snNbRh3JNYiMlYArdZLaACPf32KlkmnDOIVG/SmZ4+IsuQ+FHn8EDLGSyvbQaczc cwcQfor/EgjUPzQeQNgnF//dOk8eqWDDHugegAZy9UHQ1ovkZjmimjmUIndgYRC0+/xg by/uDMEUyHrRPd6TrLbOGofPrqkJzMebv1SAWxDsB6xYs4yyd1GWhjWvSXe+UsCLvXXB jEPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=5C834QfPZp7MC4pXPTYtshqGjNDVlYiEF51gV45QG8o=; b=JhzI8ulrbfsTciUQwTwKL9s61KmG217Ud/ZuetBv24ucOlz78FodYujejZqnUK3SBY GR8ZPalo5mDb2UZFD1vcbQblyTd2tCndtc1TmLalyLCN4zgM3c+FQ5K8fdyE3aI8nFeI dQ1HpMHkJZPWTB6794pDJt90dDIXOPR9+oqF2dxF1F19FIRX7lK98pL4VlVsJCcN4l2d 5Gx0YEfAHOhL/SvyHAWConKPXdY0viIg74cGUfAjVewaC6VdkcKz/uozW2ujIPT2yKU1 w7YdS5w7wqNZM/CH6bzguyc2FuRI8AdY0h/F06cUQYCHM8JwmDBI+TZo+tgil6wdJMTF 6Odg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=MAkEA3ue; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a6-20020a631a06000000b0050c0549c4dbsi1947173pga.702.2023.03.31.02.52.08; Fri, 31 Mar 2023 02:52:20 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=MAkEA3ue; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231953AbjCaJea (ORCPT + 99 others); Fri, 31 Mar 2023 05:34:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231421AbjCaJeI (ORCPT ); Fri, 31 Mar 2023 05:34:08 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 594FB1E71C for ; Fri, 31 Mar 2023 02:33:37 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 2488D62694 for ; Fri, 31 Mar 2023 09:33:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 368FDC433EF; Fri, 31 Mar 2023 09:33:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1680255215; bh=TCGFo3EUGQQgskyrs3hZqnkhFTHNXk7zL68YZuL2WDw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MAkEA3ue7aasfHOd8CoMIvVFdDS897IUCmjhHXLlfUn0/BDrSNgvZqBh5f7qN7txl Gbr1WCvr8KKdbyNyzBxDL+Efs/I55xDwWfmzCaeklH24MsNCK9NRE7vvVdK3L6EX0w 4FzGCq6EvJvucARKE1wQG/476GGWxIb9qzUjMlGQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" Subject: [PATCH 4/7] driver core: clean up the logic to determine which /sys/dev/ directory to use Date: Fri, 31 Mar 2023 11:33:15 +0200 Message-Id: <20230331093318.82288-4-gregkh@linuxfoundation.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230331093318.82288-1-gregkh@linuxfoundation.org> References: <20230331093318.82288-1-gregkh@linuxfoundation.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3467; i=gregkh@linuxfoundation.org; h=from:subject; bh=TCGFo3EUGQQgskyrs3hZqnkhFTHNXk7zL68YZuL2WDw=; b=owGbwMvMwCRo6H6F97bub03G02pJDClqK+7eLN65QvTa+6q/8fmJr/mFwyXmulf39P9+8/9n0 +dpG2U/d8SyMAgyMciKKbJ82cZzdH/FIUUvQ9vTMHNYmUCGMHBxCsBELrAyLGi8eFLuUNweyWeG p+wnW4n/0imeIsKwYOKjjN5/x87HM/XzfTGZprX96D6nrwA= X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 X-Spam-Status: No, score=-2.5 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761876472670844868?= X-GMAIL-MSGID: =?utf-8?q?1761876472670844868?= When a dev_t is set in a struct device, an symlink in /sys/dev/ is created for it either under /sys/dev/block/ or /sys/dev/char/ depending on the device type. The logic to determine this would trigger off of the class of the object, and the kobj_type set in that location. But it turns out that this deep nesting isn't needed at all, as it's either a choice of block or "everything else" which is a char device. So make the logic a lot more simple and obvious, and remove the incorrect comments in the code that tried to document something that was not happening at all (it is impossible to set class->dev_kobj to NULL as the class core prevented that from happening. This removes the only place that class->dev_kobj was being used, so after this, it can be removed entirely. Cc: "Rafael J. Wysocki" Signed-off-by: Greg Kroah-Hartman Acked-by: Rafael J. Wysocki --- drivers/base/base.h | 10 ++++++++++ drivers/base/core.c | 22 ++++------------------ drivers/base/devtmpfs.c | 9 --------- 3 files changed, 14 insertions(+), 27 deletions(-) diff --git a/drivers/base/base.h b/drivers/base/base.h index 6296164bb7f3..4660e1159ee0 100644 --- a/drivers/base/base.h +++ b/drivers/base/base.h @@ -209,6 +209,16 @@ int devtmpfs_init(void); static inline int devtmpfs_init(void) { return 0; } #endif +#ifdef CONFIG_BLOCK +extern struct class block_class; +static inline bool is_blockdev(struct device *dev) +{ + return dev->class == &block_class; +} +#else +static inline bool is_blockdev(struct device *dev) { return false; } +#endif + /* Device links support */ int device_links_read_lock(void); void device_links_read_unlock(int idx); diff --git a/drivers/base/core.c b/drivers/base/core.c index e3bc34fcf779..dbc2ba6dfffc 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -3430,27 +3430,13 @@ int dev_set_name(struct device *dev, const char *fmt, ...) } EXPORT_SYMBOL_GPL(dev_set_name); -/** - * device_to_dev_kobj - select a /sys/dev/ directory for the device - * @dev: device - * - * By default we select char/ for new entries. Setting class->dev_obj - * to NULL prevents an entry from being created. class->dev_kobj must - * be set (or cleared) before any devices are registered to the class - * otherwise device_create_sys_dev_entry() and - * device_remove_sys_dev_entry() will disagree about the presence of - * the link. - */ +/* select a /sys/dev/ directory for the device */ static struct kobject *device_to_dev_kobj(struct device *dev) { - struct kobject *kobj; - - if (dev->class) - kobj = dev->class->dev_kobj; + if (is_blockdev(dev)) + return sysfs_dev_block_kobj; else - kobj = sysfs_dev_char_kobj; - - return kobj; + return sysfs_dev_char_kobj; } static int device_create_sys_dev_entry(struct device *dev) diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c index ae72d4ba8547..b848764ef018 100644 --- a/drivers/base/devtmpfs.c +++ b/drivers/base/devtmpfs.c @@ -94,15 +94,6 @@ static struct file_system_type dev_fs_type = { .mount = public_dev_mount, }; -#ifdef CONFIG_BLOCK -static inline int is_blockdev(struct device *dev) -{ - return dev->class == &block_class; -} -#else -static inline int is_blockdev(struct device *dev) { return 0; } -#endif - static int devtmpfs_submit_req(struct req *req, const char *tmp) { init_completion(&req->done); From patchwork Fri Mar 31 09:33:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 77697 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp440143vqo; Fri, 31 Mar 2023 02:50:54 -0700 (PDT) X-Google-Smtp-Source: AKy350ZLUQ86D3MDTOvXTiqkIiQHyK347dorkOzG7mWMgbXUy/RWUvzxYEbI3lq34/Fad6dkgiqi X-Received: by 2002:a17:906:2759:b0:931:ad32:79ed with SMTP id a25-20020a170906275900b00931ad3279edmr24081515ejd.12.1680256254346; Fri, 31 Mar 2023 02:50:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680256254; cv=none; d=google.com; s=arc-20160816; b=vFgIyewdo1QQB/63TQ8chNziY/Lpz6X3477TwryDDRWbTgc9QhArDc+T70F6TiJ2Ox H3qxQRWyLtbEuzhZS+SOxRQGdYtD43M6zB6JJx/tU8MnYhxBSyuZSxy1Ypididbvj5HU dtS7xaTSksUETK6iUKJgM+MXxEmArTj4nwMvhx5sQK09TXwP8wuZ6Uo9oZa1LPBkiCP6 qp05RmpTcK+gMllLKX34aiVOmpNrbsL1UZCIfhr5UtHgi798BOEOu7c1PBrq4G5hEuz9 XWqJWD1DNiYusMO0jMCyOoJsgvolWtiDbeJhv1pfb0U599KQg8a9m3Ah3oTjKKBkmHpi OBQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=MDbgFqfogM4PuegmuAx6ERQyJtdqe603A7ShodrOQ4U=; b=Uqe53lI1u6Hbdz5QQj+VDq4vVkyfQb2ofKh9jWIfUuN/cgozqv29ngfrYp5h9ac8Xa kpisKrMRshhWC5Us6kw9Hu4HK/uBc/MicMVQpO2Hxqc3hMHwbu5ld3qJPm3jhbXG5fn3 OjcWGTFV2BUR1TymPrIev/xyd2Jh/U+fwal2mChM/8fkvgZLIcW3RiHEuHA9q8+5Q8vi 1pDHRilEijAxO6DqAqRUT/EmQHOlkPL02Blk9iMLBXFUn2YGrK2mhcTm5L57ctb9RzHC 4KtOXWGHRpfgjqlSSbe8TiTkF/FnraVweTKN8rdhxN8WClZkzpxOJIiISkmr4Y21j72y jESA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=OCvvcjW8; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ul6-20020a170907ca8600b00947b7ce543fsi909467ejc.794.2023.03.31.02.50.30; Fri, 31 Mar 2023 02:50:54 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=OCvvcjW8; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232243AbjCaJeh (ORCPT + 99 others); Fri, 31 Mar 2023 05:34:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232216AbjCaJeK (ORCPT ); Fri, 31 Mar 2023 05:34:10 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B55F1EFE1 for ; Fri, 31 Mar 2023 02:33:39 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id CBCFC6264F for ; Fri, 31 Mar 2023 09:33:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DE935C433EF; Fri, 31 Mar 2023 09:33:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1680255218; bh=wv/9juY+EqUubKOluUfFYi8Ig7tVyvAhOaUNWFGQD1c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OCvvcjW8xtKXhuAVeyIdBSC/oH1IIjwsHCZyMPSXcfgFg0F28z1BWM4jNyIfvaGsg 4VeHBn0l6er0sO3/9OlrF9gKgkG3h4pV3r+8H0/vvpXhDrxWR4v0zqvzv4Lo4LHmtp f/AvCSZwB6XDyUDqBuPoi0V5ikwKjJuoX5eNvKpw= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" Subject: [PATCH 5/7] driver core: class: remove dev_kobj from struct class Date: Fri, 31 Mar 2023 11:33:16 +0200 Message-Id: <20230331093318.82288-5-gregkh@linuxfoundation.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230331093318.82288-1-gregkh@linuxfoundation.org> References: <20230331093318.82288-1-gregkh@linuxfoundation.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2167; i=gregkh@linuxfoundation.org; h=from:subject; bh=wv/9juY+EqUubKOluUfFYi8Ig7tVyvAhOaUNWFGQD1c=; b=owGbwMvMwCRo6H6F97bub03G02pJDClqK+6K3rJhErvoJp35YF7pXk2pdWmLZ7l1cjDFOgXFc YedtTfuiGVhEGRikBVTZPmyjefo/opDil6Gtqdh5rAygQxh4OIUgIkUvWOYK3/68P0cxRkChkXl /6b99LCZPOOZFsM87UbBK2bTj9s5hzzo4np+zVCKyVwdAA== X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 X-Spam-Status: No, score=-2.5 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761876381766792751?= X-GMAIL-MSGID: =?utf-8?q?1761876381766792751?= The dev_kobj field in struct class is now only written to, but never read from, so it can be removed as it is useless. Cc: "Rafael J. Wysocki" Signed-off-by: Greg Kroah-Hartman Acked-by: Rafael J. Wysocki --- block/genhd.c | 1 - drivers/base/class.c | 4 ---- include/linux/device/class.h | 2 -- 3 files changed, 7 deletions(-) diff --git a/block/genhd.c b/block/genhd.c index e1e1230b1b9f..af7208a37c53 100644 --- a/block/genhd.c +++ b/block/genhd.c @@ -899,7 +899,6 @@ static int __init genhd_device_init(void) { int error; - block_class.dev_kobj = sysfs_dev_block_kobj; error = class_register(&block_class); if (unlikely(error)) return error; diff --git a/drivers/base/class.c b/drivers/base/class.c index fcfb295363cc..06b96d6faa19 100644 --- a/drivers/base/class.c +++ b/drivers/base/class.c @@ -197,10 +197,6 @@ int class_register(struct class *cls) return error; } - /* set the default /sys/dev directory for devices of this class */ - if (!cls->dev_kobj) - cls->dev_kobj = sysfs_dev_char_kobj; - cp->subsys.kobj.kset = class_kset; cp->subsys.kobj.ktype = &class_ktype; cp->class = cls; diff --git a/include/linux/device/class.h b/include/linux/device/class.h index f7aad64e256a..e946642c314e 100644 --- a/include/linux/device/class.h +++ b/include/linux/device/class.h @@ -27,7 +27,6 @@ struct fwnode_handle; * @name: Name of the class. * @class_groups: Default attributes of this class. * @dev_groups: Default attributes of the devices that belong to the class. - * @dev_kobj: The kobject that represents this class and links it into the hierarchy. * @dev_uevent: Called when a device is added, removed from this class, or a * few other things that generate uevents to add the environment * variables. @@ -55,7 +54,6 @@ struct class { const struct attribute_group **class_groups; const struct attribute_group **dev_groups; - struct kobject *dev_kobj; int (*dev_uevent)(const struct device *dev, struct kobj_uevent_env *env); char *(*devnode)(const struct device *dev, umode_t *mode); From patchwork Fri Mar 31 09:33:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 77668 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp434417vqo; Fri, 31 Mar 2023 02:36:38 -0700 (PDT) X-Google-Smtp-Source: AKy350bpB9pl7vgq0cHgrfg16e4Jb6szV48otollsjhKQbPJ5KzZTF5qvGawys1Q2banmkP0E5bC X-Received: by 2002:a17:906:ecf4:b0:930:2e1c:97ba with SMTP id qt20-20020a170906ecf400b009302e1c97bamr28241371ejb.5.1680255398728; Fri, 31 Mar 2023 02:36:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680255398; cv=none; d=google.com; s=arc-20160816; b=LBOdJRpsav05yJ5VfjvLF8M3gzTuezPLUOI4oufw470Rv4FCQcJ7XItEDbJKpj4l47 2WNGKdomyU803UYUpTNW5nzrEiSIvGH1zWHhm4/4FlZJ7qXBkgICINrhkE2I46EechBK NLf83/gSLKGLB+ED66YynOBUhKMhVD0kWzifATV4fjQJqxVLgsxa/6yf5f0Ijr3wucO6 KRKEyOQYmxhsw3G07Z15JF2pOXYeO7WexG1oPD36IDbDKtXDUwzLJlNNwaAI52XI5VLe h101Pxd0YYuruRQdyL5YJzyca/eC3tghrMsDP/ujvbRN3qfIYjbo4xDSDP6SzG+T8+EF BE+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=MmjwLK+z35njK6uKARzcnXt8L3nmbx6+RIcl6c6hHWI=; b=SMKJuevnlvzqNw0zAun6EAvGDHlVfwbGi7xJ2JQltEkOCjF3RL7ndAnqsMc2xTvpn7 8QDbEe02f5bzSSIoYDYPWs8pXqybPugLXNQ3rs2SYigAQceKYbdtuQn+8ZKtRv/hv4Sk Flz5UkGa7GQYrXKpOyxcFPZ3jemj57e0nuj7ff73gPXjRXTQBij/saVjkvDVh14Wjbxu 89871QhddJRLPPkWuOBvy40yPBYX1P06yhqwE28M+PiSUqbxVcytCc/32vRc55Jk6G8e AEl7PK18D/FUiyQxAdUusxYOtuA+5rSgK07DqySCiSfLZp83It9yARN1HlBFfyq1Tp1S UHNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=CVROJi0N; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z24-20020a170906945800b00934e42a80a9si1735188ejx.3.2023.03.31.02.36.15; Fri, 31 Mar 2023 02:36:38 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=CVROJi0N; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232359AbjCaJeo (ORCPT + 99 others); Fri, 31 Mar 2023 05:34:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37844 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232145AbjCaJeM (ORCPT ); Fri, 31 Mar 2023 05:34:12 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BB0101DF83 for ; Fri, 31 Mar 2023 02:33:43 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 64662B82DC7 for ; Fri, 31 Mar 2023 09:33:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B7D18C433EF; Fri, 31 Mar 2023 09:33:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1680255221; bh=33lnSUxnErAsDK9U63Sy6HNzuJEGFsalNiocLSuqpEw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CVROJi0NV3/sK6ygfoObALOLCmpl81uHPeFG4Gdwtb0yBM885q9Bw5MWbHy+xfdf4 3mLkdvqHBv/bthoE0fsLmQGY4sswEVealasv+5Cz4qW9zeLBZS3r9StgZdvFLG+zq1 y4kej51wjWmRIDc/Tcq26CAyDSLuK6694w00HjMg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" Subject: [PATCH 6/7] driver core: make sysfs_dev_block_kobj static Date: Fri, 31 Mar 2023 11:33:17 +0200 Message-Id: <20230331093318.82288-6-gregkh@linuxfoundation.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230331093318.82288-1-gregkh@linuxfoundation.org> References: <20230331093318.82288-1-gregkh@linuxfoundation.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1451; i=gregkh@linuxfoundation.org; h=from:subject; bh=33lnSUxnErAsDK9U63Sy6HNzuJEGFsalNiocLSuqpEw=; b=owGbwMvMwCRo6H6F97bub03G02pJDClqK+7KPRXaM1/TzCdj6u+bPhVnFknUKC9ZEh791D5kr Vf58guSHbEsDIJMDLJiiixftvEc3V9xSNHL0PY0zBxWJpAhDFycAjCRG6EM8xQOneF8fH/GW1/t kkttF5pORW0XiGKY71Wze+XWY7W5kr/Lb88987A51dsgFAA= X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 X-Spam-Status: No, score=-2.5 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761875485096399302?= X-GMAIL-MSGID: =?utf-8?q?1761875485096399302?= Nothing outside of drivers/base/core.c uses sysfs_dev_block_kobj, so make it static and document what it is used for so we remember it the next time we touch it 15 years from now. Cc: "Rafael J. Wysocki" Signed-off-by: Greg Kroah-Hartman Acked-by: Rafael J. Wysocki --- drivers/base/core.c | 4 +++- include/linux/device/class.h | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/base/core.c b/drivers/base/core.c index dbc2ba6dfffc..cf6f41c2060c 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -2256,7 +2256,9 @@ int (*platform_notify)(struct device *dev) = NULL; int (*platform_notify_remove)(struct device *dev) = NULL; static struct kobject *dev_kobj; struct kobject *sysfs_dev_char_kobj; -struct kobject *sysfs_dev_block_kobj; + +/* /sys/dev/block */ +static struct kobject *sysfs_dev_block_kobj; static DEFINE_MUTEX(device_hotplug_lock); diff --git a/include/linux/device/class.h b/include/linux/device/class.h index e946642c314e..7e4a1a6329f4 100644 --- a/include/linux/device/class.h +++ b/include/linux/device/class.h @@ -76,8 +76,6 @@ struct class_dev_iter { const struct device_type *type; }; -extern struct kobject *sysfs_dev_block_kobj; - int __must_check class_register(struct class *class); void class_unregister(const struct class *class); bool class_is_registered(const struct class *class); From patchwork Fri Mar 31 09:33:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg KH X-Patchwork-Id: 77677 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp436808vqo; Fri, 31 Mar 2023 02:42:59 -0700 (PDT) X-Google-Smtp-Source: AKy350ZsMJQLwOFpjWb2tf2gJn5RVb3890/8AwkdbcFYi6cSGv+/O57Zsx2cmAVTyUsAOmPgztVG X-Received: by 2002:a17:907:a4c2:b0:947:7a69:96cf with SMTP id vq2-20020a170907a4c200b009477a6996cfmr3131726ejc.22.1680255779124; Fri, 31 Mar 2023 02:42:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680255779; cv=none; d=google.com; s=arc-20160816; b=xxDTBdlIjq3BqmNEUXSlEF3i8f4ZQSxNXjote1sIY62P3LtPtCA9Nv4x5hZDDcT4yO dJCF6xcb1tmZBHuYSDzbePp7OHnYkAKk//nFYyEacTzC6fyC7ytYKcgffzFd3zSsqZbS T0Vx1/pjGaQcpVUGVpK2ju9J2jwDRJAE+wcma04oKKX2B41FnzOya9JYQB2Vy1Hs8Ap1 NLsYu1aUZEyB361uklmD3TDacPbJ+V267e/ZGHFvy3XN1LEkV3Ybdu3Zpjd0x25NkCTz hh9XGiwH/2vhykiDD/VEyEu35JXo/G0ZAKWRjyCZI3HFVh2Ec7RqaIAHUnZ93QLDE+cW 37dQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=VENeokqFJ14/MEgp80VvhbE/kOcf7ncnWszmq9YbN8k=; b=SRHBVA7zyPaF/LsExB2CZFqt6uBxnFi1rFn8qoKQfsOA8q9R9CAF/pFmFVa6CP75qF UX1CETKdtwXxXXhApC5Kf4UnFBU0hfDDgAaFifdoh8PDwB5vBsp39NNYQewTI5HjC4Aq etrDgJT84/FoBdSBP2KXBdZqgjQAO5hk9rU2cHLV/srLt5HhfhGqNaOcy0hirYGZatB4 QNqfJODprmiyGyxd5CCsTKflZ2/FkZXkJGBDpP4Kmyn1HdJK3IziopoOphIQZIAwDTtd Gq1az0VXkAtwT2DyiKvZ6he5Uy87jXGUDuVN7p5w1uP1IJuoHxTYs5TEYQ/OoGfL9rvP aJAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="LpxUaUG/"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qw30-20020a1709066a1e00b00947ca9388eesi286085ejc.540.2023.03.31.02.42.35; Fri, 31 Mar 2023 02:42:59 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="LpxUaUG/"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232377AbjCaJer (ORCPT + 99 others); Fri, 31 Mar 2023 05:34:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38880 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232146AbjCaJeM (ORCPT ); Fri, 31 Mar 2023 05:34:12 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CDE951E721 for ; Fri, 31 Mar 2023 02:33:44 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 58CA26267C for ; Fri, 31 Mar 2023 09:33:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6B224C4339B; Fri, 31 Mar 2023 09:33:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1680255223; bh=Zs88aniaG2xrRdlt5Cwe66oCTU15EGFax/mMSpnsOZw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LpxUaUG/3JrIhMOzAYddDpZYiB+fPUIIHnyig2PhisW/55oJaZHY+z9jvDjx9EveW pGanx9iyvjmeIJuma9JMCPlLO5MAZ/3rUAlU7TvE/wI7uUK3pKZiaPEdSWuC1inEAo jkh0clvA84ACyEwB6ttrDCj9J2eNcbfjEri8t28o= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" Subject: [PATCH 7/7] driver core: make sysfs_dev_char_kobj static Date: Fri, 31 Mar 2023 11:33:18 +0200 Message-Id: <20230331093318.82288-7-gregkh@linuxfoundation.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230331093318.82288-1-gregkh@linuxfoundation.org> References: <20230331093318.82288-1-gregkh@linuxfoundation.org> MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1584; i=gregkh@linuxfoundation.org; h=from:subject; bh=Zs88aniaG2xrRdlt5Cwe66oCTU15EGFax/mMSpnsOZw=; b=owGbwMvMwCRo6H6F97bub03G02pJDClqK+7tTepben3mB93pbJ4FK9In77no+qkxsu66vLl+V fkr9ZlTOmJZGASZGGTFFFm+bOM5ur/ikKKXoe1pmDmsTCBDGLg4BWAi3rcZ5udXeF9YpT9x6elI Fa6U9X6CfwrjVBnme024uPbbjczD9zJ8aidktW318g0JBAA= X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 X-Spam-Status: No, score=-5.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761875883729368077?= X-GMAIL-MSGID: =?utf-8?q?1761875883729368077?= Nothing outside of drivers/base/core.c uses sysfs_dev_char_kobj, so make it static and document what it is used for so we remember it the next time we touch it 15 years from now. Cc: "Rafael J. Wysocki" Signed-off-by: Greg Kroah-Hartman Acked-by: Rafael J. Wysocki --- drivers/base/base.h | 3 --- drivers/base/core.c | 4 +++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/base/base.h b/drivers/base/base.h index 4660e1159ee0..e96f3343fd7c 100644 --- a/drivers/base/base.h +++ b/drivers/base/base.h @@ -191,9 +191,6 @@ const char *device_get_devnode(const struct device *dev, umode_t *mode, extern struct kset *devices_kset; void devices_kset_move_last(struct device *dev); -/* /sys/dev/char directory */ -extern struct kobject *sysfs_dev_char_kobj; - #if defined(CONFIG_MODULES) && defined(CONFIG_SYSFS) void module_add_driver(struct module *mod, struct device_driver *drv); void module_remove_driver(struct device_driver *drv); diff --git a/drivers/base/core.c b/drivers/base/core.c index cf6f41c2060c..47e16c088e77 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -2255,7 +2255,9 @@ static void fw_devlink_link_device(struct device *dev) int (*platform_notify)(struct device *dev) = NULL; int (*platform_notify_remove)(struct device *dev) = NULL; static struct kobject *dev_kobj; -struct kobject *sysfs_dev_char_kobj; + +/* /sys/dev/char */ +static struct kobject *sysfs_dev_char_kobj; /* /sys/dev/block */ static struct kobject *sysfs_dev_block_kobj;