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