mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -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[] = {
|
|||||||
|
|
||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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[] = {
|
|||||||
};
|
};
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************************************************
|
/********************************************************************
|
||||||
|
Reference in New Issue
Block a user