]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[PATCH] Fix udev device creation
authorHarald Welte <laforge@gnumonks.org>
Wed, 10 May 2006 11:28:52 +0000 (13:28 +0200)
committerChris Wright <chrisw@sous-sol.org>
Sat, 20 May 2006 22:00:32 +0000 (15:00 -0700)
This patch corrects the order of the calls to register_chrdev() and
pcmcia_register_driver().  Now udev correctly creates userspace device
files /dev/cmmN and /dev/cmxN respectively.

Based on an earlier patch by Jan Niehusmann <jan@gondor.com>.

Signed-off-by: Harald Welte <laforge@netfilter.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
drivers/char/pcmcia/cm4000_cs.c
drivers/char/pcmcia/cm4040_cs.c

index 5fdf185154330c367fc850b5009fe132e55d848e..b61354ab88bce73efcd8effee563e7f0c1a52fff 100644 (file)
@@ -2010,10 +2010,6 @@ static int __init cmm_init(void)
        if (!cmm_class)
                return -1;
 
-       rc = pcmcia_register_driver(&cm4000_driver);
-       if (rc < 0)
-               return rc;
-
        major = register_chrdev(0, DEVICE_NAME, &cm4000_fops);
        if (major < 0) {
                printk(KERN_WARNING MODULE_NAME
@@ -2021,6 +2017,12 @@ static int __init cmm_init(void)
                return -1;
        }
 
+       rc = pcmcia_register_driver(&cm4000_driver);
+       if (rc < 0) {
+               unregister_chrdev(major, DEVICE_NAME);
+               return rc;
+       }
+
        return 0;
 }
 
index 466e33bab029e6b317628649068009766f56af9f..744b57d9a589a93ae746f55e7ef736a41687ba58 100644 (file)
@@ -769,16 +769,19 @@ static int __init cm4040_init(void)
        if (!cmx_class)
                return -1;
 
-       rc = pcmcia_register_driver(&reader_driver);
-       if (rc < 0)
-               return rc;
-
        major = register_chrdev(0, DEVICE_NAME, &reader_fops);
        if (major < 0) {
                printk(KERN_WARNING MODULE_NAME
                        ": could not get major number\n");
                return -1;
        }
+
+       rc = pcmcia_register_driver(&reader_driver);
+       if (rc < 0) {
+               unregister_chrdev(major, DEVICE_NAME);
+               return rc;
+       }
+
        return 0;
 }