Skip to content

Commit

Permalink
[media] dvb core: must check dvb_create_media_graph()
Browse files Browse the repository at this point in the history
If media controller is enabled and mdev is filled, it should
ensure that the media graph will be properly initialized.

Enforce that.

Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  • Loading branch information
mchehab committed Jan 11, 2016
1 parent 13f6e88 commit 0d3ab84
Show file tree
Hide file tree
Showing 6 changed files with 23 additions and 9 deletions.
6 changes: 5 additions & 1 deletion drivers/media/common/siano/smsdvb-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1183,7 +1183,11 @@ static int smsdvb_hotplug(struct smscore_device_t *coredev,
if (smsdvb_debugfs_create(client) < 0)
pr_info("failed to create debugfs node\n");

dvb_create_media_graph(&client->adapter);
rc = dvb_create_media_graph(&client->adapter);
if (rc < 0) {
pr_err("dvb_create_media_graph failed %d\n", rc);
goto client_error;
}

pr_info("DVB interface registered.\n");
return 0;
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/dvb-core/dvbdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ int dvb_register_device(struct dvb_adapter *adap,
void dvb_unregister_device(struct dvb_device *dvbdev);

#ifdef CONFIG_MEDIA_CONTROLLER_DVB
int dvb_create_media_graph(struct dvb_adapter *adap);
__must_check int dvb_create_media_graph(struct dvb_adapter *adap);
static inline void dvb_register_media_controller(struct dvb_adapter *adap,
struct media_device *mdev)
{
Expand Down
8 changes: 5 additions & 3 deletions drivers/media/usb/au0828/au0828-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -486,12 +486,14 @@ static int dvb_register(struct au0828_dev *dev)
dvb->start_count = 0;
dvb->stop_count = 0;

#ifdef CONFIG_MEDIA_CONTROLLER_DVB
dvb_create_media_graph(&dvb->adapter);
#endif
result = dvb_create_media_graph(&dvb->adapter);
if (result < 0)
goto fail_create_graph;

return 0;

fail_create_graph:
dvb_net_release(&dvb->net);
fail_fe_conn:
dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem);
fail_fe_mem:
Expand Down
6 changes: 5 additions & 1 deletion drivers/media/usb/cx231xx/cx231xx-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -551,10 +551,14 @@ static int register_dvb(struct cx231xx_dvb *dvb,

/* register network adapter */
dvb_net_init(&dvb->adapter, &dvb->net, &dvb->demux.dmx);
dvb_create_media_graph(&dvb->adapter);
result = dvb_create_media_graph(&dvb->adapter);
if (result < 0)
goto fail_create_graph;

return 0;

fail_create_graph:
dvb_net_release(&dvb->net);
fail_fe_conn:
dvb->demux.dmx.remove_frontend(&dvb->demux.dmx, &dvb->fe_mem);
fail_fe_mem:
Expand Down
4 changes: 3 additions & 1 deletion drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -698,7 +698,9 @@ static int dvb_usbv2_adapter_frontend_init(struct dvb_usb_adapter *adap)
}
}

dvb_create_media_graph(&adap->dvb_adap);
ret = dvb_create_media_graph(&adap->dvb_adap);
if (ret < 0)
goto err_dvb_unregister_frontend;

return 0;

Expand Down
6 changes: 4 additions & 2 deletions drivers/media/usb/dvb-usb/dvb-usb-dvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -318,10 +318,12 @@ int dvb_usb_adapter_frontend_init(struct dvb_usb_adapter *adap)

adap->num_frontends_initialized++;
}
if (ret)
return ret;

dvb_create_media_graph(&adap->dvb_adap);
ret = dvb_create_media_graph(&adap->dvb_adap);

return 0;
return ret;
}

int dvb_usb_adapter_frontend_exit(struct dvb_usb_adapter *adap)
Expand Down

0 comments on commit 0d3ab84

Please sign in to comment.