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) |