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

cxl: make cxl_class constant

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

Cc: Andrew Donnellan <ajd@linux.ibm.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: linuxppc-dev@lists.ozlabs.org
Acked-by: Frederic Barrat <fbarrat@linux.ibm.com>
Link: https://lore.kernel.org/r/2023102434-haiku-uphill-0c11@gregkh
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

+10 -11
+10 -11
drivers/misc/cxl/file.c
··· 38 38 39 39 static dev_t cxl_dev; 40 40 41 - static struct class *cxl_class; 42 - 43 41 static int __afu_open(struct inode *inode, struct file *file, bool master) 44 42 { 45 43 struct cxl *adapter; ··· 557 559 return kasprintf(GFP_KERNEL, "cxl/%s", dev_name(dev)); 558 560 } 559 561 560 - extern struct class *cxl_class; 562 + static const struct class cxl_class = { 563 + .name = "cxl", 564 + .devnode = cxl_devnode, 565 + }; 561 566 562 567 static int cxl_add_chardev(struct cxl_afu *afu, dev_t devt, struct cdev *cdev, 563 568 struct device **chardev, char *postfix, char *desc, ··· 576 575 return rc; 577 576 } 578 577 579 - dev = device_create(cxl_class, &afu->dev, devt, afu, 578 + dev = device_create(&cxl_class, &afu->dev, devt, afu, 580 579 "afu%i.%i%s", afu->adapter->adapter_num, afu->slice, postfix); 581 580 if (IS_ERR(dev)) { 582 581 rc = PTR_ERR(dev); ··· 634 633 635 634 int cxl_register_afu(struct cxl_afu *afu) 636 635 { 637 - afu->dev.class = cxl_class; 636 + afu->dev.class = &cxl_class; 638 637 639 638 return device_register(&afu->dev); 640 639 } 641 640 642 641 int cxl_register_adapter(struct cxl *adapter) 643 642 { 644 - adapter->dev.class = cxl_class; 643 + adapter->dev.class = &cxl_class; 645 644 646 645 /* 647 646 * Future: When we support dynamically reprogramming the PSL & AFU we ··· 679 678 680 679 pr_devel("CXL device allocated, MAJOR %i\n", MAJOR(cxl_dev)); 681 680 682 - cxl_class = class_create("cxl"); 683 - if (IS_ERR(cxl_class)) { 681 + rc = class_register(&cxl_class); 682 + if (rc) { 684 683 pr_err("Unable to create CXL class\n"); 685 - rc = PTR_ERR(cxl_class); 686 684 goto err; 687 685 } 688 - cxl_class->devnode = cxl_devnode; 689 686 690 687 return 0; 691 688 ··· 695 696 void cxl_file_exit(void) 696 697 { 697 698 unregister_chrdev_region(cxl_dev, CXL_NUM_MINORS); 698 - class_destroy(cxl_class); 699 + class_unregister(&cxl_class); 699 700 }