diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2011-12-31 06:01:56 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-01-06 09:44:22 -0500 |
commit | 42702de248d9edff22efe25e275c211a5bb80baf (patch) | |
tree | c502c082b02454ec983d37c78a4191efd50fe78e | |
parent | e4b8537c974cf0f95282286e2f9e3e2476258f52 (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>
-rw-r--r-- | drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c | 40 |
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 5f6ac48198f..8aa01149351 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 | |||
1756 | err_release_dmxdev: | ||
1757 | dvb_dmxdev_release(&ttusb->dmxdev); | ||
1758 | err_release_dmx: | ||
1759 | dvb_dmx_release(&ttusb->dvb_demux); | ||
1760 | err_i2c_del_adapter: | ||
1761 | i2c_del_adapter(&ttusb->i2c_adap); | ||
1762 | err_unregister_adapter: | ||
1763 | dvb_unregister_adapter (&ttusb->adapter); | ||
1764 | return result; | ||
1761 | } | 1765 | } |
1762 | 1766 | ||
1763 | static void ttusb_disconnect(struct usb_interface *intf) | 1767 | static void ttusb_disconnect(struct usb_interface *intf) |