Commit 392fa3a3 authored by Ivan Orlov's avatar Ivan Orlov Committed by Corey Minyard

ipmi: make ipmi_class a static const structure

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 <minyard@acm.org>
Cc: openipmi-developer@lists.sourceforge.net
Suggested-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarIvan Orlov <ivan.orlov0322@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Message-Id: <20230620143701.577657-2-gregkh@linuxfoundation.org>
Signed-off-by: default avatarCorey Minyard <minyard@acm.org>
parent b8d72e32
...@@ -807,7 +807,9 @@ struct ipmi_reg_list { ...@@ -807,7 +807,9 @@ struct ipmi_reg_list {
static LIST_HEAD(reg_list); static LIST_HEAD(reg_list);
static DEFINE_MUTEX(reg_list_mutex); static DEFINE_MUTEX(reg_list_mutex);
static struct class *ipmi_class; static const struct class ipmi_class = {
.name = "ipmi",
};
static void ipmi_new_smi(int if_num, struct device *device) 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 *device) ...@@ -822,7 +824,7 @@ static void ipmi_new_smi(int if_num, struct device *device)
entry->dev = dev; entry->dev = dev;
mutex_lock(&reg_list_mutex); mutex_lock(&reg_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, &reg_list); list_add(&entry->link, &reg_list);
mutex_unlock(&reg_list_mutex); mutex_unlock(&reg_list_mutex);
} }
...@@ -840,7 +842,7 @@ static void ipmi_smi_gone(int if_num) ...@@ -840,7 +842,7 @@ static void ipmi_smi_gone(int if_num)
break; break;
} }
} }
device_destroy(ipmi_class, dev); device_destroy(&ipmi_class, dev);
mutex_unlock(&reg_list_mutex); mutex_unlock(&reg_list_mutex);
} }
...@@ -860,15 +862,13 @@ static int __init init_ipmi_devintf(void) ...@@ -860,15 +862,13 @@ static int __init init_ipmi_devintf(void)
pr_info("ipmi device interface\n"); pr_info("ipmi device interface\n");
ipmi_class = class_create("ipmi"); rv = class_register(&ipmi_class);
if (IS_ERR(ipmi_class)) { if (rv)
pr_err("ipmi: can't register device class\n"); return rv;
return PTR_ERR(ipmi_class);
}
rv = register_chrdev(ipmi_major, DEVICE_NAME, &ipmi_fops); rv = register_chrdev(ipmi_major, DEVICE_NAME, &ipmi_fops);
if (rv < 0) { if (rv < 0) {
class_destroy(ipmi_class); class_unregister(&ipmi_class);
pr_err("ipmi: can't get major %d\n", ipmi_major); pr_err("ipmi: can't get major %d\n", ipmi_major);
return rv; return rv;
} }
...@@ -880,7 +880,7 @@ static int __init init_ipmi_devintf(void) ...@@ -880,7 +880,7 @@ static int __init init_ipmi_devintf(void)
rv = ipmi_smi_watcher_register(&smi_watcher); rv = ipmi_smi_watcher_register(&smi_watcher);
if (rv) { if (rv) {
unregister_chrdev(ipmi_major, DEVICE_NAME); unregister_chrdev(ipmi_major, DEVICE_NAME);
class_destroy(ipmi_class); class_unregister(&ipmi_class);
pr_warn("ipmi: can't register smi watcher\n"); pr_warn("ipmi: can't register smi watcher\n");
return rv; return rv;
} }
...@@ -895,11 +895,11 @@ static void __exit cleanup_ipmi(void) ...@@ -895,11 +895,11 @@ static void __exit cleanup_ipmi(void)
mutex_lock(&reg_list_mutex); mutex_lock(&reg_list_mutex);
list_for_each_entry_safe(entry, entry2, &reg_list, link) { list_for_each_entry_safe(entry, entry2, &reg_list, link) {
list_del(&entry->link); list_del(&entry->link);
device_destroy(ipmi_class, entry->dev); device_destroy(&ipmi_class, entry->dev);
kfree(entry); kfree(entry);
} }
mutex_unlock(&reg_list_mutex); mutex_unlock(&reg_list_mutex);
class_destroy(ipmi_class); class_unregister(&ipmi_class);
ipmi_smi_watcher_unregister(&smi_watcher); ipmi_smi_watcher_unregister(&smi_watcher);
unregister_chrdev(ipmi_major, DEVICE_NAME); unregister_chrdev(ipmi_major, DEVICE_NAME);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment