2023-03-31 16:56:38

by Greg Kroah-Hartman

[permalink] [raw]
Subject: [PATCH] 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: [email protected]
Cc: Jens Axboe <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
Note, I would like to take this through my driver-core tree as it is
needed for other struct class cleanup work I have done and am continuing
to do there.

drivers/block/pktcdvd.c | 40 ++++++++++++----------------------------
1 file changed, 12 insertions(+), 28 deletions(-)

diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index ba9bbdef9ef5..79af8a59142e 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -100,7 +100,8 @@ static struct mutex ctl_mutex; /* Serialize open/close/setup/teardown */
static mempool_t psd_pool;
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 */

/* forward declaration */
@@ -315,8 +316,8 @@ static const struct attribute_group *pkt_groups[] = {

static void pkt_sysfs_dev_new(struct pktcdvd_device *pd)
{
- if (class_pktcdvd) {
- pd->dev = device_create_with_groups(class_pktcdvd, NULL,
+ if (class_is_registered(&class_pktcdvd)) {
+ pd->dev = device_create_with_groups(&class_pktcdvd, NULL,
MKDEV(0, 0), pd, pkt_groups,
"%s", pd->name);
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)
{
- if (class_pktcdvd)
+ if (class_is_registered(&class_pktcdvd))
device_unregister(pd->dev);
}

@@ -338,11 +339,6 @@ static void pkt_sysfs_dev_remove(struct pktcdvd_device *pd)
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,
char *data)
{
@@ -405,35 +401,23 @@ static struct attribute *class_pktcdvd_attrs[] = {
};
ATTRIBUTE_GROUPS(class_pktcdvd);

+static struct class class_pktcdvd = {
+ .name = DRIVER_NAME,
+ .class_groups = class_pktcdvd_groups,
+};
+
static int pkt_sysfs_init(void)
{
- int ret = 0;
-
/*
* create control files in sysfs
* /sys/class/pktcdvd/...
*/
- class_pktcdvd = kzalloc(sizeof(*class_pktcdvd), GFP_KERNEL);
- 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;
+ return class_register(&class_pktcdvd);
}

static void pkt_sysfs_cleanup(void)
{
- if (class_pktcdvd)
- class_destroy(class_pktcdvd);
- class_pktcdvd = NULL;
+ class_unregister(&class_pktcdvd);
}

/********************************************************************
--
2.40.0


2023-04-02 02:33:00

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH] pktcdvd: simplify the class_pktcdvd logic

On 3/31/23 10:47 AM, Greg Kroah-Hartman wrote:
> 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: [email protected]
> Cc: Jens Axboe <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>
> ---
> Note, I would like to take this through my driver-core tree as it is
> needed for other struct class cleanup work I have done and am continuing
> to do there.

I'm going to defer to you on this kind of stuff, so if you think it's
fine, then go for it.

--
Jens Axboe


2023-04-02 09:06:38

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] pktcdvd: simplify the class_pktcdvd logic

On Sat, Apr 01, 2023 at 08:25:10PM -0600, Jens Axboe wrote:
> On 3/31/23 10:47 AM, Greg Kroah-Hartman wrote:
> > 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: [email protected]
> > Cc: Jens Axboe <[email protected]>
> > Signed-off-by: Greg Kroah-Hartman <[email protected]>
> > ---
> > Note, I would like to take this through my driver-core tree as it is
> > needed for other struct class cleanup work I have done and am continuing
> > to do there.
>
> I'm going to defer to you on this kind of stuff, so if you think it's
> fine, then go for it.

Thanks! And sorry for sending this twice, I forgot I had previously
sent this a few days prior. Too many patches to juggle over here...

greg k-h