mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 07:31:45 +00:00
scsi: sg: Make sg_sysfs_class constant
Since commit 43a7206b09
("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 sg_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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ricardo B. Marliere <ricardo@marliere.net>
Link: https://lore.kernel.org/r/20240302-class_cleanup-scsi-v1-1-b9096b990e27@marliere.net
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
db06ae7ce9
commit
f1fb41765d
@ -1424,7 +1424,9 @@ static const struct file_operations sg_fops = {
|
||||
.llseek = no_llseek,
|
||||
};
|
||||
|
||||
static struct class *sg_sysfs_class;
|
||||
static const struct class sg_sysfs_class = {
|
||||
.name = "scsi_generic"
|
||||
};
|
||||
|
||||
static int sg_sysfs_valid = 0;
|
||||
|
||||
@ -1526,7 +1528,7 @@ sg_add_device(struct device *cl_dev)
|
||||
if (sg_sysfs_valid) {
|
||||
struct device *sg_class_member;
|
||||
|
||||
sg_class_member = device_create(sg_sysfs_class, cl_dev->parent,
|
||||
sg_class_member = device_create(&sg_sysfs_class, cl_dev->parent,
|
||||
MKDEV(SCSI_GENERIC_MAJOR,
|
||||
sdp->index),
|
||||
sdp, "%s", sdp->name);
|
||||
@ -1616,7 +1618,7 @@ sg_remove_device(struct device *cl_dev)
|
||||
read_unlock_irqrestore(&sdp->sfd_lock, iflags);
|
||||
|
||||
sysfs_remove_link(&scsidp->sdev_gendev.kobj, "generic");
|
||||
device_destroy(sg_sysfs_class, MKDEV(SCSI_GENERIC_MAJOR, sdp->index));
|
||||
device_destroy(&sg_sysfs_class, MKDEV(SCSI_GENERIC_MAJOR, sdp->index));
|
||||
cdev_del(sdp->cdev);
|
||||
sdp->cdev = NULL;
|
||||
|
||||
@ -1687,11 +1689,9 @@ init_sg(void)
|
||||
SG_MAX_DEVS, "sg");
|
||||
if (rc)
|
||||
return rc;
|
||||
sg_sysfs_class = class_create("scsi_generic");
|
||||
if ( IS_ERR(sg_sysfs_class) ) {
|
||||
rc = PTR_ERR(sg_sysfs_class);
|
||||
rc = class_register(&sg_sysfs_class);
|
||||
if (rc)
|
||||
goto err_out;
|
||||
}
|
||||
sg_sysfs_valid = 1;
|
||||
rc = scsi_register_interface(&sg_interface);
|
||||
if (0 == rc) {
|
||||
@ -1700,7 +1700,7 @@ init_sg(void)
|
||||
#endif /* CONFIG_SCSI_PROC_FS */
|
||||
return 0;
|
||||
}
|
||||
class_destroy(sg_sysfs_class);
|
||||
class_unregister(&sg_sysfs_class);
|
||||
register_sg_sysctls();
|
||||
err_out:
|
||||
unregister_chrdev_region(MKDEV(SCSI_GENERIC_MAJOR, 0), SG_MAX_DEVS);
|
||||
@ -1715,7 +1715,7 @@ exit_sg(void)
|
||||
remove_proc_subtree("scsi/sg", NULL);
|
||||
#endif /* CONFIG_SCSI_PROC_FS */
|
||||
scsi_unregister_interface(&sg_interface);
|
||||
class_destroy(sg_sysfs_class);
|
||||
class_unregister(&sg_sysfs_class);
|
||||
sg_sysfs_valid = 0;
|
||||
unregister_chrdev_region(MKDEV(SCSI_GENERIC_MAJOR, 0),
|
||||
SG_MAX_DEVS);
|
||||
|
Loading…
Reference in New Issue
Block a user