aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2011-12-31 06:01:56 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-01-06 09:44:22 -0500
commit42702de248d9edff22efe25e275c211a5bb80baf (patch)
treec502c082b02454ec983d37c78a4191efd50fe78e /drivers
parente4b8537c974cf0f95282286e2f9e3e2476258f52 (diff)
[media] ttusb-budget: use goto for exception handling
Avoid some repetition by adopting the usual "goto err" idiom for error handling. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c40
1 files changed, 22 insertions, 18 deletions
diff --git a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
index 5f6ac48198f0..8aa01149351a 100644
--- a/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
+++ b/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c
@@ -1704,10 +1704,8 @@ static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i
1704 ttusb->i2c_adap.dev.parent = &udev->dev; 1704 ttusb->i2c_adap.dev.parent = &udev->dev;
1705 1705
1706 result = i2c_add_adapter(&ttusb->i2c_adap); 1706 result = i2c_add_adapter(&ttusb->i2c_adap);
1707 if (result) { 1707 if (result)
1708 dvb_unregister_adapter (&ttusb->adapter); 1708 goto err_unregister_adapter;
1709 return result;
1710 }
1711 1709
1712 memset(&ttusb->dvb_demux, 0, sizeof(ttusb->dvb_demux)); 1710 memset(&ttusb->dvb_demux, 0, sizeof(ttusb->dvb_demux));
1713 1711
@@ -1724,33 +1722,29 @@ static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i
1724 ttusb->dvb_demux.stop_feed = ttusb_stop_feed; 1722 ttusb->dvb_demux.stop_feed = ttusb_stop_feed;
1725 ttusb->dvb_demux.write_to_decoder = NULL; 1723 ttusb->dvb_demux.write_to_decoder = NULL;
1726 1724
1727 if ((result = dvb_dmx_init(&ttusb->dvb_demux)) < 0) { 1725 result = dvb_dmx_init(&ttusb->dvb_demux);
1726 if (result < 0) {
1728 printk("ttusb_dvb: dvb_dmx_init failed (errno = %d)\n", result); 1727 printk("ttusb_dvb: dvb_dmx_init failed (errno = %d)\n", result);
1729 i2c_del_adapter(&ttusb->i2c_adap); 1728 result = -ENODEV;
1730 dvb_unregister_adapter (&ttusb->adapter); 1729 goto err_i2c_del_adapter;
1731 return -ENODEV;
1732 } 1730 }
1733//FIXME dmxdev (nur WAS?) 1731//FIXME dmxdev (nur WAS?)
1734 ttusb->dmxdev.filternum = ttusb->dvb_demux.filternum; 1732 ttusb->dmxdev.filternum = ttusb->dvb_demux.filternum;
1735 ttusb->dmxdev.demux = &ttusb->dvb_demux.dmx; 1733 ttusb->dmxdev.demux = &ttusb->dvb_demux.dmx;
1736 ttusb->dmxdev.capabilities = 0; 1734 ttusb->dmxdev.capabilities = 0;
1737 1735
1738 if ((result = dvb_dmxdev_init(&ttusb->dmxdev, &ttusb->adapter)) < 0) { 1736 result = dvb_dmxdev_init(&ttusb->dmxdev, &ttusb->adapter);
1737 if (result < 0) {
1739 printk("ttusb_dvb: dvb_dmxdev_init failed (errno = %d)\n", 1738 printk("ttusb_dvb: dvb_dmxdev_init failed (errno = %d)\n",
1740 result); 1739 result);
1741 dvb_dmx_release(&ttusb->dvb_demux); 1740 result = -ENODEV;
1742 i2c_del_adapter(&ttusb->i2c_adap); 1741 goto err_release_dmx;
1743 dvb_unregister_adapter (&ttusb->adapter);
1744 return -ENODEV;
1745 } 1742 }
1746 1743
1747 if (dvb_net_init(&ttusb->adapter, &ttusb->dvbnet, &ttusb->dvb_demux.dmx)) { 1744 if (dvb_net_init(&ttusb->adapter, &ttusb->dvbnet, &ttusb->dvb_demux.dmx)) {
1748 printk("ttusb_dvb: dvb_net_init failed!\n"); 1745 printk("ttusb_dvb: dvb_net_init failed!\n");
1749 dvb_dmxdev_release(&ttusb->dmxdev); 1746 result = -ENODEV;
1750 dvb_dmx_release(&ttusb->dvb_demux); 1747 goto err_release_dmxdev;
1751 i2c_del_adapter(&ttusb->i2c_adap);
1752 dvb_unregister_adapter (&ttusb->adapter);
1753 return -ENODEV;
1754 } 1748 }
1755 1749
1756 usb_set_intfdata(intf, (void *) ttusb); 1750 usb_set_intfdata(intf, (void *) ttusb);
@@ -1758,6 +1752,16 @@ static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i
1758 frontend_init(ttusb); 1752 frontend_init(ttusb);
1759 1753
1760 return 0; 1754 return 0;
1755
1756err_release_dmxdev:
1757 dvb_dmxdev_release(&ttusb->dmxdev);
1758err_release_dmx:
1759 dvb_dmx_release(&ttusb->dvb_demux);
1760err_i2c_del_adapter:
1761 i2c_del_adapter(&ttusb->i2c_adap);
1762err_unregister_adapter:
1763 dvb_unregister_adapter (&ttusb->adapter);
1764 return result;
1761} 1765}
1762 1766
1763static void ttusb_disconnect(struct usb_interface *intf) 1767static void ttusb_disconnect(struct usb_interface *intf)