fbdev: via: Fix error in via_core_init()
authorShang XiaoJing <shangxiaojing@huawei.com>
Mon, 14 Nov 2022 01:08:52 +0000 (09:08 +0800)
committerHelge Deller <deller@gmx.de>
Wed, 14 Dec 2022 19:01:50 +0000 (20:01 +0100)
via_core_init() won't exit the driver when pci_register_driver() failed.
Exit the viafb-i2c and the viafb-gpio in failed path to prevent error.

VIA Graphics Integration Chipset framebuffer 2.4 initializing
Error: Driver 'viafb-i2c' is already registered, aborting...
Error: Driver 'viafb-gpio' is already registered, aborting...

Fixes: 7582eb9be85f ("viafb: Turn GPIO and i2c into proper platform devices")
Signed-off-by: Shang XiaoJing <shangxiaojing@huawei.com>
Signed-off-by: Helge Deller <deller@gmx.de>
drivers/video/fbdev/via/via-core.c

index 32a6399b080b1b111428d4c5704941d8ccce0d67..2c1803eb196fe0cdaf821362a522755a860a81aa 100644 (file)
@@ -733,7 +733,14 @@ static int __init via_core_init(void)
                return ret;
        viafb_i2c_init();
        viafb_gpio_init();
-       return pci_register_driver(&via_driver);
+       ret = pci_register_driver(&via_driver);
+       if (ret) {
+               viafb_gpio_exit();
+               viafb_i2c_exit();
+               return ret;
+       }
+
+       return 0;
 }
 
 static void __exit via_core_exit(void)