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>
                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)