diff options
Diffstat (limited to 'drivers/net/tlan.c')
| -rw-r--r-- | drivers/net/tlan.c | 25 | 
1 files changed, 18 insertions, 7 deletions
| diff --git a/drivers/net/tlan.c b/drivers/net/tlan.c index c99ce74a7aff..3af5b92b48c8 100644 --- a/drivers/net/tlan.c +++ b/drivers/net/tlan.c | |||
| @@ -465,7 +465,7 @@ static struct pci_driver tlan_driver = { | |||
| 465 | 465 | ||
| 466 | static int __init tlan_probe(void) | 466 | static int __init tlan_probe(void) | 
| 467 | { | 467 | { | 
| 468 | static int pad_allocated; | 468 | int rc = -ENODEV; | 
| 469 | 469 | ||
| 470 | printk(KERN_INFO "%s", tlan_banner); | 470 | printk(KERN_INFO "%s", tlan_banner); | 
| 471 | 471 | ||
| @@ -473,17 +473,22 @@ static int __init tlan_probe(void) | |||
| 473 | 473 | ||
| 474 | if (TLanPadBuffer == NULL) { | 474 | if (TLanPadBuffer == NULL) { | 
| 475 | printk(KERN_ERR "TLAN: Could not allocate memory for pad buffer.\n"); | 475 | printk(KERN_ERR "TLAN: Could not allocate memory for pad buffer.\n"); | 
| 476 | return -ENOMEM; | 476 | rc = -ENOMEM; | 
| 477 | goto err_out; | ||
| 477 | } | 478 | } | 
| 478 | 479 | ||
| 479 | memset(TLanPadBuffer, 0, TLAN_MIN_FRAME_SIZE); | 480 | memset(TLanPadBuffer, 0, TLAN_MIN_FRAME_SIZE); | 
| 480 | pad_allocated = 1; | ||
| 481 | 481 | ||
| 482 | TLAN_DBG(TLAN_DEBUG_PROBE, "Starting PCI Probe....\n"); | 482 | TLAN_DBG(TLAN_DEBUG_PROBE, "Starting PCI Probe....\n"); | 
| 483 | 483 | ||
| 484 | /* Use new style PCI probing. Now the kernel will | 484 | /* Use new style PCI probing. Now the kernel will | 
| 485 | do most of this for us */ | 485 | do most of this for us */ | 
| 486 | pci_register_driver(&tlan_driver); | 486 | rc = pci_register_driver(&tlan_driver); | 
| 487 | |||
| 488 | if (rc != 0) { | ||
| 489 | printk(KERN_ERR "TLAN: Could not register pci driver.\n"); | ||
| 490 | goto err_out_pci_free; | ||
| 491 | } | ||
| 487 | 492 | ||
| 488 | TLAN_DBG(TLAN_DEBUG_PROBE, "Starting EISA Probe....\n"); | 493 | TLAN_DBG(TLAN_DEBUG_PROBE, "Starting EISA Probe....\n"); | 
| 489 | TLan_EisaProbe(); | 494 | TLan_EisaProbe(); | 
| @@ -493,11 +498,17 @@ static int __init tlan_probe(void) | |||
| 493 | tlan_have_pci, tlan_have_eisa); | 498 | tlan_have_pci, tlan_have_eisa); | 
| 494 | 499 | ||
| 495 | if (TLanDevicesInstalled == 0) { | 500 | if (TLanDevicesInstalled == 0) { | 
| 496 | pci_unregister_driver(&tlan_driver); | 501 | rc = -ENODEV; | 
| 497 | pci_free_consistent(NULL, TLAN_MIN_FRAME_SIZE, TLanPadBuffer, TLanPadBufferDMA); | 502 | goto err_out_pci_unreg; | 
| 498 | return -ENODEV; | ||
| 499 | } | 503 | } | 
| 500 | return 0; | 504 | return 0; | 
| 505 | |||
| 506 | err_out_pci_unreg: | ||
| 507 | pci_unregister_driver(&tlan_driver); | ||
| 508 | err_out_pci_free: | ||
| 509 | pci_free_consistent(NULL, TLAN_MIN_FRAME_SIZE, TLanPadBuffer, TLanPadBufferDMA); | ||
| 510 | err_out: | ||
| 511 | return rc; | ||
| 501 | } | 512 | } | 
| 502 | 513 | ||
| 503 | 514 | ||
