Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

rapidio: make all 'class' structures const

Now that the driver core allows for struct class to be in read-only
memory, making all 'class' structures to be declared at build time
placing them into read-only memory, instead of having to be dynamically
allocated at load time.

Suggested-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
Link: https://lore.kernel.org/r/20230810195103.27069-1-ivan.orlov0322@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Ivan Orlov and committed by
Greg Kroah-Hartman
d712d205 4f013424

+19 -15
+9 -7
drivers/rapidio/devices/rio_mport_cdev.c
··· 250 250 static DECLARE_WAIT_QUEUE_HEAD(mport_cdev_wait); 251 251 #endif 252 252 253 - static struct class *dev_class; 253 + static const struct class dev_class = { 254 + .name = DRV_NAME, 255 + }; 254 256 static dev_t dev_number; 255 257 256 258 static void mport_release_mapping(struct kref *ref); ··· 2381 2379 2382 2380 device_initialize(&md->dev); 2383 2381 md->dev.devt = MKDEV(MAJOR(dev_number), mport->id); 2384 - md->dev.class = dev_class; 2382 + md->dev.class = &dev_class; 2385 2383 md->dev.parent = &mport->dev; 2386 2384 md->dev.release = mport_device_release; 2387 2385 dev_set_name(&md->dev, DEV_NAME "%d", mport->id); ··· 2602 2600 int ret; 2603 2601 2604 2602 /* Create device class needed by udev */ 2605 - dev_class = class_create(DRV_NAME); 2606 - if (IS_ERR(dev_class)) { 2603 + ret = class_register(&dev_class); 2604 + if (ret) { 2607 2605 rmcd_error("Unable to create " DRV_NAME " class"); 2608 - return PTR_ERR(dev_class); 2606 + return ret; 2609 2607 } 2610 2608 2611 2609 ret = alloc_chrdev_region(&dev_number, 0, RIO_MAX_MPORTS, DRV_NAME); ··· 2626 2624 err_cli: 2627 2625 unregister_chrdev_region(dev_number, RIO_MAX_MPORTS); 2628 2626 err_chr: 2629 - class_destroy(dev_class); 2627 + class_unregister(&dev_class); 2630 2628 return ret; 2631 2629 } 2632 2630 ··· 2636 2634 static void __exit mport_exit(void) 2637 2635 { 2638 2636 class_interface_unregister(&rio_mport_interface); 2639 - class_destroy(dev_class); 2637 + class_unregister(&dev_class); 2640 2638 unregister_chrdev_region(dev_number, RIO_MAX_MPORTS); 2641 2639 } 2642 2640
+10 -8
drivers/rapidio/rio_cm.c
··· 233 233 static LIST_HEAD(cm_dev_list); 234 234 static DECLARE_RWSEM(rdev_sem); 235 235 236 - static struct class *dev_class; 236 + static const struct class dev_class = { 237 + .name = DRV_NAME, 238 + }; 237 239 static unsigned int dev_major; 238 240 static unsigned int dev_minor_base; 239 241 static dev_t dev_number; ··· 2074 2072 return ret; 2075 2073 } 2076 2074 2077 - riocm_cdev.dev = device_create(dev_class, NULL, devno, NULL, DEV_NAME); 2075 + riocm_cdev.dev = device_create(&dev_class, NULL, devno, NULL, DEV_NAME); 2078 2076 if (IS_ERR(riocm_cdev.dev)) { 2079 2077 cdev_del(&riocm_cdev.cdev); 2080 2078 return PTR_ERR(riocm_cdev.dev); ··· 2295 2293 int ret; 2296 2294 2297 2295 /* Create device class needed by udev */ 2298 - dev_class = class_create(DRV_NAME); 2299 - if (IS_ERR(dev_class)) { 2296 + ret = class_register(&dev_class); 2297 + if (ret) { 2300 2298 riocm_error("Cannot create " DRV_NAME " class"); 2301 - return PTR_ERR(dev_class); 2299 + return ret; 2302 2300 } 2303 2301 2304 2302 ret = alloc_chrdev_region(&dev_number, 0, 1, DRV_NAME); 2305 2303 if (ret) { 2306 - class_destroy(dev_class); 2304 + class_unregister(&dev_class); 2307 2305 return ret; 2308 2306 } 2309 2307 ··· 2351 2349 class_interface_unregister(&rio_mport_interface); 2352 2350 err_reg: 2353 2351 unregister_chrdev_region(dev_number, 1); 2354 - class_destroy(dev_class); 2352 + class_unregister(&dev_class); 2355 2353 return ret; 2356 2354 } 2357 2355 ··· 2366 2364 device_unregister(riocm_cdev.dev); 2367 2365 cdev_del(&(riocm_cdev.cdev)); 2368 2366 2369 - class_destroy(dev_class); 2367 + class_unregister(&dev_class); 2370 2368 unregister_chrdev_region(dev_number, 1); 2371 2369 } 2372 2370