Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42702de2 authored by Jonathan Nieder's avatar Jonathan Nieder Committed by Mauro Carvalho Chehab
Browse files

[media] ttusb-budget: use goto for exception handling



Avoid some repetition by adopting the usual "goto err" idiom for error
handling.

Signed-off-by: default avatarJonathan Nieder <jrnieder@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent e4b8537c
Loading
Loading
Loading
Loading
+22 −18
Original line number Diff line number Diff line
@@ -1704,10 +1704,8 @@ static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i
	ttusb->i2c_adap.dev.parent	  = &udev->dev;

	result = i2c_add_adapter(&ttusb->i2c_adap);
	if (result) {
		dvb_unregister_adapter (&ttusb->adapter);
		return result;
	}
	if (result)
		goto err_unregister_adapter;

	memset(&ttusb->dvb_demux, 0, sizeof(ttusb->dvb_demux));

@@ -1724,33 +1722,29 @@ static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i
	ttusb->dvb_demux.stop_feed = ttusb_stop_feed;
	ttusb->dvb_demux.write_to_decoder = NULL;

	if ((result = dvb_dmx_init(&ttusb->dvb_demux)) < 0) {
	result = dvb_dmx_init(&ttusb->dvb_demux);
	if (result < 0) {
		printk("ttusb_dvb: dvb_dmx_init failed (errno = %d)\n", result);
		i2c_del_adapter(&ttusb->i2c_adap);
		dvb_unregister_adapter (&ttusb->adapter);
		return -ENODEV;
		result = -ENODEV;
		goto err_i2c_del_adapter;
	}
//FIXME dmxdev (nur WAS?)
	ttusb->dmxdev.filternum = ttusb->dvb_demux.filternum;
	ttusb->dmxdev.demux = &ttusb->dvb_demux.dmx;
	ttusb->dmxdev.capabilities = 0;

	if ((result = dvb_dmxdev_init(&ttusb->dmxdev, &ttusb->adapter)) < 0) {
	result = dvb_dmxdev_init(&ttusb->dmxdev, &ttusb->adapter);
	if (result < 0) {
		printk("ttusb_dvb: dvb_dmxdev_init failed (errno = %d)\n",
		       result);
		dvb_dmx_release(&ttusb->dvb_demux);
		i2c_del_adapter(&ttusb->i2c_adap);
		dvb_unregister_adapter (&ttusb->adapter);
		return -ENODEV;
		result = -ENODEV;
		goto err_release_dmx;
	}

	if (dvb_net_init(&ttusb->adapter, &ttusb->dvbnet, &ttusb->dvb_demux.dmx)) {
		printk("ttusb_dvb: dvb_net_init failed!\n");
		dvb_dmxdev_release(&ttusb->dmxdev);
		dvb_dmx_release(&ttusb->dvb_demux);
		i2c_del_adapter(&ttusb->i2c_adap);
		dvb_unregister_adapter (&ttusb->adapter);
		return -ENODEV;
		result = -ENODEV;
		goto err_release_dmxdev;
	}

	usb_set_intfdata(intf, (void *) ttusb);
@@ -1758,6 +1752,16 @@ static int ttusb_probe(struct usb_interface *intf, const struct usb_device_id *i
	frontend_init(ttusb);

	return 0;

err_release_dmxdev:
	dvb_dmxdev_release(&ttusb->dmxdev);
err_release_dmx:
	dvb_dmx_release(&ttusb->dvb_demux);
err_i2c_del_adapter:
	i2c_del_adapter(&ttusb->i2c_adap);
err_unregister_adapter:
	dvb_unregister_adapter (&ttusb->adapter);
	return result;
}

static void ttusb_disconnect(struct usb_interface *intf)