aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2007-02-10 17:56:38 -0500
committerStefan Richter <stefanr@s5r6.in-berlin.de>2007-04-29 18:00:30 -0400
commit157188cb54b22e5c0c6439ef0500ba97b068097a (patch)
treefa11e37a34850e7b71c8642de3cf14c55b98161b
parentea9057ad622db41745be416e29c5760d141a6514 (diff)
ieee1394: eth1394: unregister address space in failure case
Warn if hpsb_allocate_and_register_addrspace() failed. Unregister the address space if something else failed. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
-rw-r--r--drivers/ieee1394/eth1394.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/ieee1394/eth1394.c b/drivers/ieee1394/eth1394.c
index a364003ba47f..e2b84c9b83bb 100644
--- a/drivers/ieee1394/eth1394.c
+++ b/drivers/ieee1394/eth1394.c
@@ -568,8 +568,10 @@ static void ether1394_add_host (struct hpsb_host *host)
568 &eth1394_highlevel, host, &addr_ops, 568 &eth1394_highlevel, host, &addr_ops,
569 ETHER1394_REGION_ADDR_LEN, ETHER1394_REGION_ADDR_LEN, 569 ETHER1394_REGION_ADDR_LEN, ETHER1394_REGION_ADDR_LEN,
570 CSR1212_INVALID_ADDR_SPACE, CSR1212_INVALID_ADDR_SPACE); 570 CSR1212_INVALID_ADDR_SPACE, CSR1212_INVALID_ADDR_SPACE);
571 if (fifo_addr == CSR1212_INVALID_ADDR_SPACE) 571 if (fifo_addr == CSR1212_INVALID_ADDR_SPACE) {
572 goto out; 572 ETH1394_PRINT_G(KERN_ERR, "Cannot register CSR space\n");
573 return;
574 }
573 575
574 /* We should really have our own alloc_hpsbdev() function in 576 /* We should really have our own alloc_hpsbdev() function in
575 * net_init.c instead of calling the one for ethernet then hijacking 577 * net_init.c instead of calling the one for ethernet then hijacking
@@ -640,16 +642,13 @@ static void ether1394_add_host (struct hpsb_host *host)
640 else 642 else
641 priv->bc_state = ETHER1394_BC_RUNNING; 643 priv->bc_state = ETHER1394_BC_RUNNING;
642 } 644 }
643
644 return; 645 return;
645
646out: 646out:
647 if (dev != NULL) 647 if (dev)
648 free_netdev(dev); 648 free_netdev(dev);
649 if (hi) 649 if (hi)
650 hpsb_destroy_hostinfo(&eth1394_highlevel, host); 650 hpsb_destroy_hostinfo(&eth1394_highlevel, host);
651 651 hpsb_unregister_addrspace(&eth1394_highlevel, host, fifo_addr);
652 return;
653} 652}
654 653
655/* Remove a card from our list */ 654/* Remove a card from our list */