diff options
Diffstat (limited to 'drivers/pci/probe.c')
| -rw-r--r-- | drivers/pci/probe.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index c5a58d1c6c1c..a3b0a5eb5054 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c | |||
| @@ -339,6 +339,7 @@ pci_alloc_child_bus(struct pci_bus *parent, struct pci_dev *bridge, int busnr) | |||
| 339 | { | 339 | { |
| 340 | struct pci_bus *child; | 340 | struct pci_bus *child; |
| 341 | int i; | 341 | int i; |
| 342 | int retval; | ||
| 342 | 343 | ||
| 343 | /* | 344 | /* |
| 344 | * Allocate a new bus, and inherit stuff from the parent.. | 345 | * Allocate a new bus, and inherit stuff from the parent.. |
| @@ -356,8 +357,13 @@ pci_alloc_child_bus(struct pci_bus *parent, struct pci_dev *bridge, int busnr) | |||
| 356 | 357 | ||
| 357 | child->class_dev.class = &pcibus_class; | 358 | child->class_dev.class = &pcibus_class; |
| 358 | sprintf(child->class_dev.class_id, "%04x:%02x", pci_domain_nr(child), busnr); | 359 | sprintf(child->class_dev.class_id, "%04x:%02x", pci_domain_nr(child), busnr); |
| 359 | class_device_register(&child->class_dev); | 360 | retval = class_device_register(&child->class_dev); |
| 360 | class_device_create_file(&child->class_dev, &class_device_attr_cpuaffinity); | 361 | if (retval) |
| 362 | goto error_register; | ||
| 363 | retval = class_device_create_file(&child->class_dev, | ||
| 364 | &class_device_attr_cpuaffinity); | ||
| 365 | if (retval) | ||
| 366 | goto error_file_create; | ||
| 361 | 367 | ||
| 362 | /* | 368 | /* |
| 363 | * Set up the primary, secondary and subordinate | 369 | * Set up the primary, secondary and subordinate |
| @@ -375,6 +381,12 @@ pci_alloc_child_bus(struct pci_bus *parent, struct pci_dev *bridge, int busnr) | |||
| 375 | bridge->subordinate = child; | 381 | bridge->subordinate = child; |
| 376 | 382 | ||
| 377 | return child; | 383 | return child; |
| 384 | |||
| 385 | error_file_create: | ||
| 386 | class_device_unregister(&child->class_dev); | ||
| 387 | error_register: | ||
| 388 | kfree(child); | ||
| 389 | return NULL; | ||
| 378 | } | 390 | } |
| 379 | 391 | ||
| 380 | struct pci_bus * __devinit pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr) | 392 | struct pci_bus * __devinit pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr) |
