Skip to content

Commit 72ef02b

Browse files
ivanorlov2206axboe
authored andcommitted
bsg: make bsg_class a static const structure
Now that the driver core allows for struct class to be in read-only memory, move the bsg_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: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Cc: Jens Axboe <axboe@kernel.dk> Cc: linux-scsi@vger.kernel.org Cc: linux-block@vger.kernel.org Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Link: https://lore.kernel.org/r/20230620180129.645646-8-gregkh@linuxfoundation.org Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent 2eefd39 commit 72ef02b

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

block/bsg.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ static inline struct bsg_device *to_bsg_device(struct inode *inode)
3939
#define BSG_MAX_DEVS 32768
4040

4141
static DEFINE_IDA(bsg_minor_ida);
42-
static struct class *bsg_class;
42+
static const struct class bsg_class;
4343
static int bsg_major;
4444

4545
static unsigned int bsg_timeout(struct bsg_device *bd, struct sg_io_v4 *hdr)
@@ -208,7 +208,7 @@ struct bsg_device *bsg_register_queue(struct request_queue *q,
208208
return ERR_PTR(ret);
209209
}
210210
bd->device.devt = MKDEV(bsg_major, ret);
211-
bd->device.class = bsg_class;
211+
bd->device.class = &bsg_class;
212212
bd->device.parent = parent;
213213
bd->device.release = bsg_device_release;
214214
dev_set_name(&bd->device, "%s", name);
@@ -242,15 +242,19 @@ static char *bsg_devnode(const struct device *dev, umode_t *mode)
242242
return kasprintf(GFP_KERNEL, "bsg/%s", dev_name(dev));
243243
}
244244

245+
static const struct class bsg_class = {
246+
.name = "bsg",
247+
.devnode = bsg_devnode,
248+
};
249+
245250
static int __init bsg_init(void)
246251
{
247252
dev_t devid;
248253
int ret;
249254

250-
bsg_class = class_create("bsg");
251-
if (IS_ERR(bsg_class))
252-
return PTR_ERR(bsg_class);
253-
bsg_class->devnode = bsg_devnode;
255+
ret = class_register(&bsg_class);
256+
if (ret)
257+
return ret;
254258

255259
ret = alloc_chrdev_region(&devid, 0, BSG_MAX_DEVS, "bsg");
256260
if (ret)
@@ -262,7 +266,7 @@ static int __init bsg_init(void)
262266
return 0;
263267

264268
destroy_bsg_class:
265-
class_destroy(bsg_class);
269+
class_unregister(&bsg_class);
266270
return ret;
267271
}
268272

0 commit comments

Comments
 (0)