From nobody Wed Feb 11 07:48:33 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42207EB64D7 for ; Tue, 20 Jun 2023 14:37:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233312AbjFTOhM (ORCPT ); Tue, 20 Jun 2023 10:37:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44432 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230490AbjFTOhJ (ORCPT ); Tue, 20 Jun 2023 10:37:09 -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 52646E9 for ; Tue, 20 Jun 2023 07:37:08 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id CD9F0612A3 for ; Tue, 20 Jun 2023 14:37:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D5E8AC433C0; Tue, 20 Jun 2023 14:37:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1687271827; bh=xbu9l18ogaQhPDGquwWb+KtRsIUkpWzgRakje7PITDA=; h=From:To:Cc:Subject:Date:From; b=d81hcfU4edxoMkcKUo4T4gUKAZ37YRIEdyQXZtjtOxWWfMh0/ajMJDGpHmvd+wPZ+ FPyqWkvA9JsCsT3vNGxOYPHFj8ALIuCUQPyOhvr5a8x85uh62juI7w7F/zrIJ3P3y4 3At4GqF3M27SsZ6IeF2U1pbZT4XkaQ3ZHEBTPBf0= From: Greg Kroah-Hartman To: minyard@acm.org Cc: linux-kernel@vger.kernel.org, Ivan Orlov , openipmi-developer@lists.sourceforge.net, Greg Kroah-Hartman Subject: [PATCH] ipmi: make ipmi_class a static const structure Date: Tue, 20 Jun 2023 16:37:02 +0200 Message-ID: <20230620143701.577657-2-gregkh@linuxfoundation.org> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3020; i=gregkh@linuxfoundation.org; h=from:subject; bh=a4xcYV0fvsjCWQlXBXjb8iizMDRF8ihdB423Fz28XNo=; b=owGbwMvMwCRo6H6F97bub03G02pJDCkTd/ZeeRLhcGODp/SKOKvmG2Kx6e5GdvNqbrvOnDddw J+xdQJHRywLgyATg6yYIsuXbTxH91ccUvQytD0NM4eVCWQIAxenAExEo5lhwbEjepPsXk4Nfals r3vQde+DwN28kxnmaW0vzogTW1V7/pjp++/zL/VuP9HLCgA= X-Developer-Key: i=gregkh@linuxfoundation.org; a=openpgp; fpr=F4B60CC5BF78C2214A313DCB3147D40DDB2DFB29 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Ivan Orlov Now that the driver core allows for struct class to be in read-only memory, move the ipmi_class structure to be declared at build time placing it into read-only memory, instead of having to be dynamically allocated at boot time. Cc: Corey Minyard Cc: openipmi-developer@lists.sourceforge.net Suggested-by: Greg Kroah-Hartman Signed-off-by: Ivan Orlov Signed-off-by: Greg Kroah-Hartman --- drivers/char/ipmi/ipmi_devintf.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/char/ipmi/ipmi_devintf.c b/drivers/char/ipmi/ipmi_devi= ntf.c index 73e5a9e28f85..332082e02ea5 100644 --- a/drivers/char/ipmi/ipmi_devintf.c +++ b/drivers/char/ipmi/ipmi_devintf.c @@ -807,7 +807,9 @@ struct ipmi_reg_list { static LIST_HEAD(reg_list); static DEFINE_MUTEX(reg_list_mutex); =20 -static struct class *ipmi_class; +static const struct class ipmi_class =3D { + .name =3D "ipmi", +}; =20 static void ipmi_new_smi(int if_num, struct device *device) { @@ -822,7 +824,7 @@ static void ipmi_new_smi(int if_num, struct device *dev= ice) entry->dev =3D dev; =20 mutex_lock(®_list_mutex); - device_create(ipmi_class, device, dev, NULL, "ipmi%d", if_num); + device_create(&ipmi_class, device, dev, NULL, "ipmi%d", if_num); list_add(&entry->link, ®_list); mutex_unlock(®_list_mutex); } @@ -840,7 +842,7 @@ static void ipmi_smi_gone(int if_num) break; } } - device_destroy(ipmi_class, dev); + device_destroy(&ipmi_class, dev); mutex_unlock(®_list_mutex); } =20 @@ -860,15 +862,13 @@ static int __init init_ipmi_devintf(void) =20 pr_info("ipmi device interface\n"); =20 - ipmi_class =3D class_create("ipmi"); - if (IS_ERR(ipmi_class)) { - pr_err("ipmi: can't register device class\n"); - return PTR_ERR(ipmi_class); - } + rv =3D class_register(&ipmi_class); + if (rv) + return rv; =20 rv =3D register_chrdev(ipmi_major, DEVICE_NAME, &ipmi_fops); if (rv < 0) { - class_destroy(ipmi_class); + class_unregister(&ipmi_class); pr_err("ipmi: can't get major %d\n", ipmi_major); return rv; } @@ -880,7 +880,7 @@ static int __init init_ipmi_devintf(void) rv =3D ipmi_smi_watcher_register(&smi_watcher); if (rv) { unregister_chrdev(ipmi_major, DEVICE_NAME); - class_destroy(ipmi_class); + class_unregister(&ipmi_class); pr_warn("ipmi: can't register smi watcher\n"); return rv; } @@ -895,11 +895,11 @@ static void __exit cleanup_ipmi(void) mutex_lock(®_list_mutex); list_for_each_entry_safe(entry, entry2, ®_list, link) { list_del(&entry->link); - device_destroy(ipmi_class, entry->dev); + device_destroy(&ipmi_class, entry->dev); kfree(entry); } mutex_unlock(®_list_mutex); - class_destroy(ipmi_class); + class_unregister(&ipmi_class); ipmi_smi_watcher_unregister(&smi_watcher); unregister_chrdev(ipmi_major, DEVICE_NAME); } --=20 2.41.0