Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
Commit 43ba3d4a authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

pktcdvd: simplify the class_pktcdvd logic

There is no need to dynamically create and destroy the class_pktcdvd
structure, just make it static and remove the memory allocation logic
which simplifies and cleans up the logic a lot.

Cc: linux-block@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>
Link: https://lore.kernel.org/r/20230331164724.319703-1-gregkh@linuxfoundation.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f326ea63
Branches
Tags
No related merge requests found
...@@ -100,7 +100,8 @@ static struct mutex ctl_mutex; /* Serialize open/close/setup/teardown */ ...@@ -100,7 +100,8 @@ static struct mutex ctl_mutex; /* Serialize open/close/setup/teardown */
static mempool_t psd_pool; static mempool_t psd_pool;
static struct bio_set pkt_bio_set; static struct bio_set pkt_bio_set;
static struct class *class_pktcdvd = NULL; /* /sys/class/pktcdvd */ /* /sys/class/pktcdvd */
static struct class class_pktcdvd;
static struct dentry *pkt_debugfs_root = NULL; /* /sys/kernel/debug/pktcdvd */ static struct dentry *pkt_debugfs_root = NULL; /* /sys/kernel/debug/pktcdvd */
/* forward declaration */ /* forward declaration */
...@@ -315,8 +316,8 @@ static const struct attribute_group *pkt_groups[] = { ...@@ -315,8 +316,8 @@ static const struct attribute_group *pkt_groups[] = {
static void pkt_sysfs_dev_new(struct pktcdvd_device *pd) static void pkt_sysfs_dev_new(struct pktcdvd_device *pd)
{ {
if (class_pktcdvd) { if (class_is_registered(&class_pktcdvd)) {
pd->dev = device_create_with_groups(class_pktcdvd, NULL, pd->dev = device_create_with_groups(&class_pktcdvd, NULL,
MKDEV(0, 0), pd, pkt_groups, MKDEV(0, 0), pd, pkt_groups,
"%s", pd->name); "%s", pd->name);
if (IS_ERR(pd->dev)) if (IS_ERR(pd->dev))
...@@ -326,7 +327,7 @@ static void pkt_sysfs_dev_new(struct pktcdvd_device *pd) ...@@ -326,7 +327,7 @@ static void pkt_sysfs_dev_new(struct pktcdvd_device *pd)
static void pkt_sysfs_dev_remove(struct pktcdvd_device *pd) static void pkt_sysfs_dev_remove(struct pktcdvd_device *pd)
{ {
if (class_pktcdvd) if (class_is_registered(&class_pktcdvd))
device_unregister(pd->dev); device_unregister(pd->dev);
} }
...@@ -338,11 +339,6 @@ static void pkt_sysfs_dev_remove(struct pktcdvd_device *pd) ...@@ -338,11 +339,6 @@ static void pkt_sysfs_dev_remove(struct pktcdvd_device *pd)
device_map show mappings device_map show mappings
*******************************************************************/ *******************************************************************/
static void class_pktcdvd_release(struct class *cls)
{
kfree(cls);
}
static ssize_t device_map_show(const struct class *c, const struct class_attribute *attr, static ssize_t device_map_show(const struct class *c, const struct class_attribute *attr,
char *data) char *data)
{ {
...@@ -405,35 +401,23 @@ static struct attribute *class_pktcdvd_attrs[] = { ...@@ -405,35 +401,23 @@ static struct attribute *class_pktcdvd_attrs[] = {
}; };
ATTRIBUTE_GROUPS(class_pktcdvd); ATTRIBUTE_GROUPS(class_pktcdvd);
static struct class class_pktcdvd = {
.name = DRIVER_NAME,
.class_groups = class_pktcdvd_groups,
};
static int pkt_sysfs_init(void) static int pkt_sysfs_init(void)
{ {
int ret = 0;
/* /*
* create control files in sysfs * create control files in sysfs
* /sys/class/pktcdvd/... * /sys/class/pktcdvd/...
*/ */
class_pktcdvd = kzalloc(sizeof(*class_pktcdvd), GFP_KERNEL); return class_register(&class_pktcdvd);
if (!class_pktcdvd)
return -ENOMEM;
class_pktcdvd->name = DRIVER_NAME;
class_pktcdvd->class_release = class_pktcdvd_release;
class_pktcdvd->class_groups = class_pktcdvd_groups;
ret = class_register(class_pktcdvd);
if (ret) {
kfree(class_pktcdvd);
class_pktcdvd = NULL;
pr_err("failed to create class pktcdvd\n");
return ret;
}
return 0;
} }
static void pkt_sysfs_cleanup(void) static void pkt_sysfs_cleanup(void)
{ {
if (class_pktcdvd) class_unregister(&class_pktcdvd);
class_destroy(class_pktcdvd);
class_pktcdvd = NULL;
} }
/******************************************************************** /********************************************************************
......
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