[SCSI] fc class: fix fc_transport_init error handling
If transport_class_register fails we should unregister any registered classes, or we will leak memory or other resources. I did a quick modprobe of scsi_transport_fc to test the patch. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Cc: Stable Tree <stable@kernel.org> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
d685c26208
commit
48de68a40a
1 changed files with 14 additions and 3 deletions
|
@ -649,11 +649,22 @@ static __init int fc_transport_init(void)
|
|||
return error;
|
||||
error = transport_class_register(&fc_vport_class);
|
||||
if (error)
|
||||
return error;
|
||||
goto unreg_host_class;
|
||||
error = transport_class_register(&fc_rport_class);
|
||||
if (error)
|
||||
return error;
|
||||
return transport_class_register(&fc_transport_class);
|
||||
goto unreg_vport_class;
|
||||
error = transport_class_register(&fc_transport_class);
|
||||
if (error)
|
||||
goto unreg_rport_class;
|
||||
return 0;
|
||||
|
||||
unreg_rport_class:
|
||||
transport_class_unregister(&fc_rport_class);
|
||||
unreg_vport_class:
|
||||
transport_class_unregister(&fc_vport_class);
|
||||
unreg_host_class:
|
||||
transport_class_unregister(&fc_host_class);
|
||||
return error;
|
||||
}
|
||||
|
||||
static void __exit fc_transport_exit(void)
|
||||
|
|
Loading…
Reference in a new issue