.. | .. |
---|
830 | 830 | |
---|
831 | 831 | dev_set_name(&ctlr->dev, "ctlr_%d", ctlr->id); |
---|
832 | 832 | error = device_register(&ctlr->dev); |
---|
833 | | - if (error) |
---|
834 | | - goto out_del_q2; |
---|
| 833 | + if (error) { |
---|
| 834 | + destroy_workqueue(ctlr->devloss_work_q); |
---|
| 835 | + destroy_workqueue(ctlr->work_q); |
---|
| 836 | + put_device(&ctlr->dev); |
---|
| 837 | + return NULL; |
---|
| 838 | + } |
---|
835 | 839 | |
---|
836 | 840 | return ctlr; |
---|
837 | 841 | |
---|
838 | | -out_del_q2: |
---|
839 | | - destroy_workqueue(ctlr->devloss_work_q); |
---|
840 | | - ctlr->devloss_work_q = NULL; |
---|
841 | 842 | out_del_q: |
---|
842 | 843 | destroy_workqueue(ctlr->work_q); |
---|
843 | 844 | ctlr->work_q = NULL; |
---|
.. | .. |
---|
1036 | 1037 | fcf->selected = new_fcf->selected; |
---|
1037 | 1038 | |
---|
1038 | 1039 | error = device_register(&fcf->dev); |
---|
1039 | | - if (error) |
---|
1040 | | - goto out_del; |
---|
| 1040 | + if (error) { |
---|
| 1041 | + put_device(&fcf->dev); |
---|
| 1042 | + goto out; |
---|
| 1043 | + } |
---|
1041 | 1044 | |
---|
1042 | 1045 | fcf->state = FCOE_FCF_STATE_CONNECTED; |
---|
1043 | 1046 | list_add_tail(&fcf->peers, &ctlr->fcfs); |
---|
1044 | 1047 | |
---|
1045 | 1048 | return fcf; |
---|
1046 | 1049 | |
---|
1047 | | -out_del: |
---|
1048 | | - kfree(fcf); |
---|
1049 | 1050 | out: |
---|
1050 | 1051 | return NULL; |
---|
1051 | 1052 | } |
---|