@@ -89,16 +89,13 @@ static void tpci200_unregister(struct tpci200_board *tpci200)
8989 free_irq (tpci200 -> info -> pdev -> irq , (void * ) tpci200 );
9090
9191 pci_iounmap (tpci200 -> info -> pdev , tpci200 -> info -> interface_regs );
92- pci_iounmap (tpci200 -> info -> pdev , tpci200 -> info -> cfg_regs );
9392
9493 pci_release_region (tpci200 -> info -> pdev , TPCI200_IP_INTERFACE_BAR );
9594 pci_release_region (tpci200 -> info -> pdev , TPCI200_IO_ID_INT_SPACES_BAR );
9695 pci_release_region (tpci200 -> info -> pdev , TPCI200_MEM16_SPACE_BAR );
9796 pci_release_region (tpci200 -> info -> pdev , TPCI200_MEM8_SPACE_BAR );
98- pci_release_region (tpci200 -> info -> pdev , TPCI200_CFG_MEM_BAR );
9997
10098 pci_disable_device (tpci200 -> info -> pdev );
101- pci_dev_put (tpci200 -> info -> pdev );
10299}
103100
104101static void tpci200_enable_irq (struct tpci200_board * tpci200 ,
@@ -257,7 +254,7 @@ static int tpci200_register(struct tpci200_board *tpci200)
257254 "(bn 0x%X, sn 0x%X) failed to allocate PCI resource for BAR 2 !" ,
258255 tpci200 -> info -> pdev -> bus -> number ,
259256 tpci200 -> info -> pdev -> devfn );
260- goto out_disable_pci ;
257+ goto err_disable_device ;
261258 }
262259
263260 /* Request IO ID INT space (Bar 3) */
@@ -269,7 +266,7 @@ static int tpci200_register(struct tpci200_board *tpci200)
269266 "(bn 0x%X, sn 0x%X) failed to allocate PCI resource for BAR 3 !" ,
270267 tpci200 -> info -> pdev -> bus -> number ,
271268 tpci200 -> info -> pdev -> devfn );
272- goto out_release_ip_space ;
269+ goto err_ip_interface_bar ;
273270 }
274271
275272 /* Request MEM8 space (Bar 5) */
@@ -280,7 +277,7 @@ static int tpci200_register(struct tpci200_board *tpci200)
280277 "(bn 0x%X, sn 0x%X) failed to allocate PCI resource for BAR 5!" ,
281278 tpci200 -> info -> pdev -> bus -> number ,
282279 tpci200 -> info -> pdev -> devfn );
283- goto out_release_ioid_int_space ;
280+ goto err_io_id_int_spaces_bar ;
284281 }
285282
286283 /* Request MEM16 space (Bar 4) */
@@ -291,7 +288,7 @@ static int tpci200_register(struct tpci200_board *tpci200)
291288 "(bn 0x%X, sn 0x%X) failed to allocate PCI resource for BAR 4!" ,
292289 tpci200 -> info -> pdev -> bus -> number ,
293290 tpci200 -> info -> pdev -> devfn );
294- goto out_release_mem8_space ;
291+ goto err_mem8_space_bar ;
295292 }
296293
297294 /* Map internal tpci200 driver user space */
@@ -305,7 +302,7 @@ static int tpci200_register(struct tpci200_board *tpci200)
305302 tpci200 -> info -> pdev -> bus -> number ,
306303 tpci200 -> info -> pdev -> devfn );
307304 res = - ENOMEM ;
308- goto out_release_mem8_space ;
305+ goto err_mem16_space_bar ;
309306 }
310307
311308 /* Initialize lock that protects interface_regs */
@@ -344,18 +341,22 @@ static int tpci200_register(struct tpci200_board *tpci200)
344341 "(bn 0x%X, sn 0x%X) unable to register IRQ !" ,
345342 tpci200 -> info -> pdev -> bus -> number ,
346343 tpci200 -> info -> pdev -> devfn );
347- goto out_release_ioid_int_space ;
344+ goto err_interface_regs ;
348345 }
349346
350347 return 0 ;
351348
352- out_release_mem8_space :
349+ err_interface_regs :
350+ pci_iounmap (tpci200 -> info -> pdev , tpci200 -> info -> interface_regs );
351+ err_mem16_space_bar :
352+ pci_release_region (tpci200 -> info -> pdev , TPCI200_MEM16_SPACE_BAR );
353+ err_mem8_space_bar :
353354 pci_release_region (tpci200 -> info -> pdev , TPCI200_MEM8_SPACE_BAR );
354- out_release_ioid_int_space :
355+ err_io_id_int_spaces_bar :
355356 pci_release_region (tpci200 -> info -> pdev , TPCI200_IO_ID_INT_SPACES_BAR );
356- out_release_ip_space :
357+ err_ip_interface_bar :
357358 pci_release_region (tpci200 -> info -> pdev , TPCI200_IP_INTERFACE_BAR );
358- out_disable_pci :
359+ err_disable_device :
359360 pci_disable_device (tpci200 -> info -> pdev );
360361 return res ;
361362}
@@ -527,7 +528,7 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
527528 tpci200 -> info = kzalloc (sizeof (struct tpci200_infos ), GFP_KERNEL );
528529 if (!tpci200 -> info ) {
529530 ret = - ENOMEM ;
530- goto out_err_info ;
531+ goto err_tpci200 ;
531532 }
532533
533534 pci_dev_get (pdev );
@@ -538,15 +539,15 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
538539 if (ret ) {
539540 dev_err (& pdev -> dev , "Failed to allocate PCI Configuration Memory" );
540541 ret = - EBUSY ;
541- goto out_err_pci_request ;
542+ goto err_tpci200_info ;
542543 }
543544 tpci200 -> info -> cfg_regs = ioremap (
544545 pci_resource_start (pdev , TPCI200_CFG_MEM_BAR ),
545546 pci_resource_len (pdev , TPCI200_CFG_MEM_BAR ));
546547 if (!tpci200 -> info -> cfg_regs ) {
547548 dev_err (& pdev -> dev , "Failed to map PCI Configuration Memory" );
548549 ret = - EFAULT ;
549- goto out_err_ioremap ;
550+ goto err_request_region ;
550551 }
551552
552553 /* Disable byte swapping for 16 bit IP module access. This will ensure
@@ -569,7 +570,7 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
569570 if (ret ) {
570571 dev_err (& pdev -> dev , "error during tpci200 install\n" );
571572 ret = - ENODEV ;
572- goto out_err_install ;
573+ goto err_cfg_regs ;
573574 }
574575
575576 /* Register the carrier in the industry pack bus driver */
@@ -581,7 +582,7 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
581582 dev_err (& pdev -> dev ,
582583 "error registering the carrier on ipack driver\n" );
583584 ret = - EFAULT ;
584- goto out_err_bus_register ;
585+ goto err_tpci200_install ;
585586 }
586587
587588 /* save the bus number given by ipack to logging purpose */
@@ -592,19 +593,16 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
592593 tpci200_create_device (tpci200 , i );
593594 return 0 ;
594595
595- out_err_bus_register :
596+ err_tpci200_install :
596597 tpci200_uninstall (tpci200 );
597- /* tpci200->info->cfg_regs is unmapped in tpci200_uninstall */
598- tpci200 -> info -> cfg_regs = NULL ;
599- out_err_install :
600- if (tpci200 -> info -> cfg_regs )
601- iounmap (tpci200 -> info -> cfg_regs );
602- out_err_ioremap :
598+ err_cfg_regs :
599+ pci_iounmap (tpci200 -> info -> pdev , tpci200 -> info -> cfg_regs );
600+ err_request_region :
603601 pci_release_region (pdev , TPCI200_CFG_MEM_BAR );
604- out_err_pci_request :
605- pci_dev_put (pdev );
602+ err_tpci200_info :
606603 kfree (tpci200 -> info );
607- out_err_info :
604+ pci_dev_put (pdev );
605+ err_tpci200 :
608606 kfree (tpci200 );
609607 return ret ;
610608}
@@ -614,6 +612,12 @@ static void __tpci200_pci_remove(struct tpci200_board *tpci200)
614612 ipack_bus_unregister (tpci200 -> info -> ipack_bus );
615613 tpci200_uninstall (tpci200 );
616614
615+ pci_iounmap (tpci200 -> info -> pdev , tpci200 -> info -> cfg_regs );
616+
617+ pci_release_region (tpci200 -> info -> pdev , TPCI200_CFG_MEM_BAR );
618+
619+ pci_dev_put (tpci200 -> info -> pdev );
620+
617621 kfree (tpci200 -> info );
618622 kfree (tpci200 );
619623}
0 commit comments