From a3aca3dabbcf00f2088d472f27755c29acaa992e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Wed, 7 Mar 2007 12:12:44 -0500 Subject: firewire: Switch cdev code over to use register_chrdev and keep a list of devices. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The old mechanism kept a struct cdev for each fw device, but fops->release would reference this struct after the device got freed in some cases. Signed-off-by: Kristian Høgsberg Signed-off-by: Stefan Richter --- drivers/firewire/fw-transaction.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'drivers/firewire/fw-transaction.c') diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c index 8e2b9455739..3052698c13a 100644 --- a/drivers/firewire/fw-transaction.c +++ b/drivers/firewire/fw-transaction.c @@ -761,6 +761,12 @@ static int __init fw_core_init(void) if (retval < 0) return retval; + fw_cdev_major = register_chrdev(0, "firewire", &fw_device_ops); + if (fw_cdev_major < 0) { + bus_unregister(&fw_bus_type); + return fw_cdev_major; + } + /* Add the vendor textual descriptor. */ retval = fw_core_add_descriptor(&vendor_id_descriptor); BUG_ON(retval < 0); @@ -772,6 +778,7 @@ static int __init fw_core_init(void) static void __exit fw_core_cleanup(void) { + unregister_chrdev(fw_cdev_major, "firewire"); bus_unregister(&fw_bus_type); } -- cgit v1.2.3