.. | .. |
---|
502 | 502 | platform_set_drvdata(pd, ssi); |
---|
503 | 503 | |
---|
504 | 504 | err = ssi_add_controller(ssi, pd); |
---|
505 | | - if (err < 0) |
---|
| 505 | + if (err < 0) { |
---|
| 506 | + hsi_put_controller(ssi); |
---|
506 | 507 | goto out1; |
---|
| 508 | + } |
---|
507 | 509 | |
---|
508 | 510 | pm_runtime_enable(&pd->dev); |
---|
509 | 511 | |
---|
.. | .. |
---|
536 | 538 | device_for_each_child(&pd->dev, NULL, ssi_remove_ports); |
---|
537 | 539 | out2: |
---|
538 | 540 | ssi_remove_controller(ssi); |
---|
| 541 | + pm_runtime_disable(&pd->dev); |
---|
539 | 542 | out1: |
---|
540 | 543 | platform_set_drvdata(pd, NULL); |
---|
541 | | - pm_runtime_disable(&pd->dev); |
---|
542 | 544 | |
---|
543 | 545 | return err; |
---|
544 | 546 | } |
---|
.. | .. |
---|
629 | 631 | if (ret) |
---|
630 | 632 | return ret; |
---|
631 | 633 | |
---|
632 | | - return platform_driver_register(&ssi_port_pdriver); |
---|
| 634 | + ret = platform_driver_register(&ssi_port_pdriver); |
---|
| 635 | + if (ret) { |
---|
| 636 | + platform_driver_unregister(&ssi_pdriver); |
---|
| 637 | + return ret; |
---|
| 638 | + } |
---|
| 639 | + |
---|
| 640 | + return 0; |
---|
633 | 641 | } |
---|
634 | 642 | module_init(ssi_init); |
---|
635 | 643 | |
---|