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 @@ -953,6 +953,7 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
953
953
resource_size_t offset , next_offset ;
954
954
LIST_HEAD (resources );
955
955
struct resource * res , * next_res ;
956
+ bool bus_registered = false;
956
957
char addr [64 ], * fmt ;
957
958
const char * name ;
958
959
int err ;
@@ -1017,6 +1018,7 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
1017
1018
name = dev_name (& bus -> dev );
1018
1019
1019
1020
err = device_register (& bus -> dev );
1021
+ bus_registered = true;
1020
1022
if (err )
1021
1023
goto unregister ;
1022
1024
@@ -1103,12 +1105,15 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
1103
1105
unregister :
1104
1106
put_device (& bridge -> dev );
1105
1107
device_del (& bridge -> dev );
1106
-
1107
1108
free :
1108
1109
#ifdef CONFIG_PCI_DOMAINS_GENERIC
1109
1110
pci_bus_release_domain_nr (parent , bus -> domain_nr );
1110
1111
#endif
1111
- kfree (bus );
1112
+ if (bus_registered )
1113
+ put_device (& bus -> dev );
1114
+ else
1115
+ kfree (bus );
1116
+
1112
1117
return err ;
1113
1118
}
1114
1119
You can’t perform that action at this time.
0 commit comments