if (ret)
                goto out;
 
-       ret = platform_driver_register(&serial8250_isa_driver);
-       if (ret)
-               goto unreg_uart_drv;
-
        serial8250_isa_devs = platform_device_alloc("serial8250",
                                                    PLAT8250_DEV_LEGACY);
        if (!serial8250_isa_devs) {
                ret = -ENOMEM;
-               goto unreg_plat_drv;
+               goto unreg_uart_drv;
        }
 
        ret = platform_device_add(serial8250_isa_devs);
 
        serial8250_register_ports(&serial8250_reg, &serial8250_isa_devs->dev);
 
-       goto out;
+       ret = platform_driver_register(&serial8250_isa_driver);
+       if (ret == 0)
+               goto out;
 
+       platform_device_del(serial8250_isa_devs);
  put_dev:
        platform_device_put(serial8250_isa_devs);
- unreg_plat_drv:
-       platform_driver_unregister(&serial8250_isa_driver);
  unreg_uart_drv:
        uart_unregister_driver(&serial8250_reg);
  out: