Commit ac9f3ac5 authored by Ricardo B. Marliere's avatar Ricardo B. Marliere Committed by Martin K. Petersen

scsi: ch: Make ch_sysfs_class constant

Since commit 43a7206b ("driver core: class: make class_register() take
a const *"), the driver core allows for struct class to be in read-only
memory, so move the ch_sysfs_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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Suggested-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarRicardo B. Marliere <ricardo@marliere.net>
Link: https://lore.kernel.org/r/20240302-class_cleanup-scsi-v1-4-b9096b990e27@marliere.netSigned-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent a08f0eb0
...@@ -102,7 +102,9 @@ do { \ ...@@ -102,7 +102,9 @@ do { \
#define MAX_RETRIES 1 #define MAX_RETRIES 1
static struct class * ch_sysfs_class; static const struct class ch_sysfs_class = {
.name = "scsi_changer",
};
typedef struct { typedef struct {
struct kref ref; struct kref ref;
...@@ -930,7 +932,7 @@ static int ch_probe(struct device *dev) ...@@ -930,7 +932,7 @@ static int ch_probe(struct device *dev)
mutex_init(&ch->lock); mutex_init(&ch->lock);
kref_init(&ch->ref); kref_init(&ch->ref);
ch->device = sd; ch->device = sd;
class_dev = device_create(ch_sysfs_class, dev, class_dev = device_create(&ch_sysfs_class, dev,
MKDEV(SCSI_CHANGER_MAJOR, ch->minor), ch, MKDEV(SCSI_CHANGER_MAJOR, ch->minor), ch,
"s%s", ch->name); "s%s", ch->name);
if (IS_ERR(class_dev)) { if (IS_ERR(class_dev)) {
...@@ -955,7 +957,7 @@ static int ch_probe(struct device *dev) ...@@ -955,7 +957,7 @@ static int ch_probe(struct device *dev)
return 0; return 0;
destroy_dev: destroy_dev:
device_destroy(ch_sysfs_class, MKDEV(SCSI_CHANGER_MAJOR, ch->minor)); device_destroy(&ch_sysfs_class, MKDEV(SCSI_CHANGER_MAJOR, ch->minor));
put_device: put_device:
scsi_device_put(sd); scsi_device_put(sd);
remove_idr: remove_idr:
...@@ -974,7 +976,7 @@ static int ch_remove(struct device *dev) ...@@ -974,7 +976,7 @@ static int ch_remove(struct device *dev)
dev_set_drvdata(dev, NULL); dev_set_drvdata(dev, NULL);
spin_unlock(&ch_index_lock); spin_unlock(&ch_index_lock);
device_destroy(ch_sysfs_class, MKDEV(SCSI_CHANGER_MAJOR,ch->minor)); device_destroy(&ch_sysfs_class, MKDEV(SCSI_CHANGER_MAJOR, ch->minor));
scsi_device_put(ch->device); scsi_device_put(ch->device);
kref_put(&ch->ref, ch_destroy); kref_put(&ch->ref, ch_destroy);
return 0; return 0;
...@@ -1003,11 +1005,9 @@ static int __init init_ch_module(void) ...@@ -1003,11 +1005,9 @@ static int __init init_ch_module(void)
int rc; int rc;
printk(KERN_INFO "SCSI Media Changer driver v" VERSION " \n"); printk(KERN_INFO "SCSI Media Changer driver v" VERSION " \n");
ch_sysfs_class = class_create("scsi_changer"); rc = class_register(&ch_sysfs_class);
if (IS_ERR(ch_sysfs_class)) { if (rc)
rc = PTR_ERR(ch_sysfs_class);
return rc; return rc;
}
rc = register_chrdev(SCSI_CHANGER_MAJOR,"ch",&changer_fops); rc = register_chrdev(SCSI_CHANGER_MAJOR,"ch",&changer_fops);
if (rc < 0) { if (rc < 0) {
printk("Unable to get major %d for SCSI-Changer\n", printk("Unable to get major %d for SCSI-Changer\n",
...@@ -1022,7 +1022,7 @@ static int __init init_ch_module(void) ...@@ -1022,7 +1022,7 @@ static int __init init_ch_module(void)
fail2: fail2:
unregister_chrdev(SCSI_CHANGER_MAJOR, "ch"); unregister_chrdev(SCSI_CHANGER_MAJOR, "ch");
fail1: fail1:
class_destroy(ch_sysfs_class); class_unregister(&ch_sysfs_class);
return rc; return rc;
} }
...@@ -1030,7 +1030,7 @@ static void __exit exit_ch_module(void) ...@@ -1030,7 +1030,7 @@ static void __exit exit_ch_module(void)
{ {
scsi_unregister_driver(&ch_template.gendrv); scsi_unregister_driver(&ch_template.gendrv);
unregister_chrdev(SCSI_CHANGER_MAJOR, "ch"); unregister_chrdev(SCSI_CHANGER_MAJOR, "ch");
class_destroy(ch_sysfs_class); class_unregister(&ch_sysfs_class);
idr_destroy(&ch_index_idr); idr_destroy(&ch_index_idr);
} }
......
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