Skip to content

Commit 53c2516

Browse files
nvax-rnvidia-bfigg
authored andcommitted
fwctl: Fix class init ordering to avoid NULL pointer dereference on device removal
BugLink: https://bugs.launchpad.net/bugs/2149918 CXL is linked before fwctl in drivers/Makefile. Both use `module_init, so `cxl_pci_driver_init()` runs first. When `cxl_pci_probe()` calls `fwctl_register()` and then `device_add()`, fwctl_class is not yet registered because fwctl_init() hasn't run, causing `class_to_subsys()` to return NULL and skip knode_class initialization. On device removal, `class_to_subsys()` returns non-NULL, and `device_del()` calls `klist_del()` on the uninitialized knode, triggering a NULL pointer dereference. Fixes: 858ce2f ("cxl: Add FWCTL support to CXL") Link: https://patch.msgid.link/r/20260409051902.40218-1-icheng@nvidia.com Signed-off-by: Richard Cheng <icheng@nvidia.com> Reviewed-by: Kai-Heng Feng <kaihengf@nvidia.com> Reviewed-by: Dave Jiang <dave.jiang@intel.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> (cherry picked from commit a55f802) Signed-off-by: Richard Cheng <icheng@nvidia.com> Acked-by: Carol L Soto <csoto@nvidia.com> Acked-by: Nirmoy Das <nirmoyd@nvidia.com> Acked-by: Matthew R. Ochs <mochs@nvidia.com> Signed-off-by: Brad Figg <bfigg@nvidia.com>
1 parent beda472 commit 53c2516

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

drivers/fwctl/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ static void __exit fwctl_exit(void)
415415
unregister_chrdev_region(fwctl_dev, FWCTL_MAX_DEVICES);
416416
}
417417

418-
module_init(fwctl_init);
418+
subsys_initcall(fwctl_init);
419419
module_exit(fwctl_exit);
420420
MODULE_DESCRIPTION("fwctl device firmware access framework");
421421
MODULE_LICENSE("GPL");

0 commit comments

Comments
 (0)