File tree Expand file tree Collapse file tree 1 file changed +7
-2
lines changed Expand file tree Collapse file tree 1 file changed +7
-2
lines changed Original file line number Diff line number Diff line change @@ -908,6 +908,7 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
908
908
resource_size_t offset , next_offset ;
909
909
LIST_HEAD (resources );
910
910
struct resource * res , * next_res ;
911
+ bool bus_registered = false;
911
912
char addr [64 ], * fmt ;
912
913
const char * name ;
913
914
int err ;
@@ -971,6 +972,7 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
971
972
name = dev_name (& bus -> dev );
972
973
973
974
err = device_register (& bus -> dev );
975
+ bus_registered = true;
974
976
if (err )
975
977
goto unregister ;
976
978
@@ -1057,12 +1059,15 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
1057
1059
unregister :
1058
1060
put_device (& bridge -> dev );
1059
1061
device_del (& bridge -> dev );
1060
-
1061
1062
free :
1062
1063
#ifdef CONFIG_PCI_DOMAINS_GENERIC
1063
1064
pci_bus_release_domain_nr (parent , bus -> domain_nr );
1064
1065
#endif
1065
- kfree (bus );
1066
+ if (bus_registered )
1067
+ put_device (& bus -> dev );
1068
+ else
1069
+ kfree (bus );
1070
+
1066
1071
return err ;
1067
1072
}
1068
1073
You can’t perform that action at this time.
0 commit comments