linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hans Verkuil <hverkuil@xs4all.nl>
To: Mauro Carvalho Chehab <mchehab@osg.samsung.com>,
	Linux Media Mailing List <linux-media@vger.kernel.org>
Cc: "Antti Palosaari" <crope@iki.fi>,
	"Stefan Richter" <stefanr@s5r6.in-berlin.de>,
	"Hans Verkuil" <hans.verkuil@cisco.com>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Rafael Lourenço de Lima Chehab" <chehabrafael@gmail.com>,
	"Michael Ira Krufky" <mkrufky@linuxtv.org>,
	"Richard Vollkommer" <linux@hauppauge.com>,
	"Devin Heitmueller" <dheitmueller@kernellabs.com>,
	"Matthias Schwarzott" <zzam@gentoo.org>,
	"Olli Salonen" <olli.salonen@iki.fi>,
	"Luis de Bethencourt" <luis@debethencourt.com>
Subject: Re: [PATCH 08/18] [media] dvb core: must check dvb_create_media_graph()
Date: Fri, 11 Sep 2015 17:22:50 +0200	[thread overview]
Message-ID: <55F2F1CA.9030201@xs4all.nl> (raw)
In-Reply-To: <fbc05ef2908903fe1978ed1df68aecc8464efdfc.1441559233.git.mchehab@osg.samsung.com>

On 09/06/2015 07:30 PM, Mauro Carvalho Chehab wrote:
> If media controller is enabled and mdev is filled, it should
> ensure that the media graph will be properly initialized.
> 
> Enforce that.
> 
> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>

Acked-by: Hans Verkuil <hans.verkuil@cisco.com>

> 
> diff --git a/drivers/media/common/siano/smsdvb-main.c b/drivers/media/common/siano/smsdvb-main.c
> index f4305ae800f4..ab345490a43a 100644
> --- a/drivers/media/common/siano/smsdvb-main.c
> +++ b/drivers/media/common/siano/smsdvb-main.c
> @@ -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;
> diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
> index 5c51084a331a..df2fe4cc2d47 100644
> --- a/drivers/media/dvb-core/dvbdev.c
> +++ b/drivers/media/dvb-core/dvbdev.c
> @@ -430,17 +430,6 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
>  		return -ENOMEM;
>  	}
>  
> -	ret = dvb_register_media_device(dvbdev, type, minor, demux_sink_pads);
> -	if (ret) {
> -		printk(KERN_ERR
> -		      "%s: dvb_register_media_device failed to create the mediagraph\n",
> -		      __func__);
> -
> -		dvb_media_device_free(dvbdev);
> -		mutex_unlock(&dvbdev_register_lock);
> -		return ret;
> -	}
> -
>  	dvbdevfops = kzalloc(sizeof(struct file_operations), GFP_KERNEL);
>  
>  	if (!dvbdevfops){
> @@ -493,6 +482,17 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
>  		       __func__, adap->num, dnames[type], id, PTR_ERR(clsdev));
>  		return PTR_ERR(clsdev);
>  	}
> +
> +	ret = dvb_register_media_device(dvbdev, type, minor, demux_sink_pads);
> +	if (ret) {
> +		printk(KERN_ERR
> +		      "%s: dvb_register_media_device failed to create the media graph\n",
> +		      __func__);
> +
> +		dvb_unregister_device(dvbdev);
> +		return ret;
> +	}
> +
>  	dprintk(KERN_DEBUG "DVB: register adapter%d/%s%d @ minor: %i (0x%02x)\n",
>  		adap->num, dnames[type], id, minor, minor);
>  
> diff --git a/drivers/media/dvb-core/dvbdev.h b/drivers/media/dvb-core/dvbdev.h
> index 9e24aafeb9ea..bd9fac91c7b9 100644
> --- a/drivers/media/dvb-core/dvbdev.h
> +++ b/drivers/media/dvb-core/dvbdev.h
> @@ -210,7 +210,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)
>  {
> diff --git a/drivers/media/usb/au0828/au0828-dvb.c b/drivers/media/usb/au0828/au0828-dvb.c
> index c01772c4f9f0..cd542b49a6c2 100644
> --- a/drivers/media/usb/au0828/au0828-dvb.c
> +++ b/drivers/media/usb/au0828/au0828-dvb.c
> @@ -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:
> diff --git a/drivers/media/usb/cx231xx/cx231xx-dvb.c b/drivers/media/usb/cx231xx/cx231xx-dvb.c
> index 66ee161fc7ba..aaf8ef246f13 100644
> --- a/drivers/media/usb/cx231xx/cx231xx-dvb.c
> +++ b/drivers/media/usb/cx231xx/cx231xx-dvb.c
> @@ -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:
> diff --git a/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c b/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
> index f5df9eaba04f..6d3f61f6dc77 100644
> --- a/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
> +++ b/drivers/media/usb/dvb-usb-v2/dvb_usb_core.c
> @@ -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;
>  
> diff --git a/drivers/media/usb/dvb-usb/dvb-usb-dvb.c b/drivers/media/usb/dvb-usb/dvb-usb-dvb.c
> index 8a260c854653..b51dbdf03f42 100644
> --- a/drivers/media/usb/dvb-usb/dvb-usb-dvb.c
> +++ b/drivers/media/usb/dvb-usb/dvb-usb-dvb.c
> @@ -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)
> 


  reply	other threads:[~2015-09-11 15:24 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-06 17:30 [PATCH 00/18] MC fixes, improvements and cleanups Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 01/18] [media] tuner-core: add an input pad Mauro Carvalho Chehab
2015-09-11 14:48   ` Hans Verkuil
2015-11-23 20:01   ` Laurent Pinchart
2015-11-24 11:00     ` Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 02/18] [media] au0828: add support for the connectors Mauro Carvalho Chehab
2015-09-11 14:57   ` Hans Verkuil
2015-12-10 18:24     ` Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 03/18] [media] au0828: Create connector links Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 04/18] [media] media-device: supress backlinks at G_TOPOLOGY ioctl Mauro Carvalho Chehab
2015-09-11 14:58   ` Hans Verkuil
2015-11-23 19:56   ` Laurent Pinchart
2015-11-24 10:57     ` Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 05/18] [media] media-controller: enable all interface links at init Mauro Carvalho Chehab
2015-09-11 15:18   ` Hans Verkuil
2015-11-23 19:46   ` Laurent Pinchart
2015-12-10 11:37     ` Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 06/18] [media] media.h: create connector entities for hybrid TV devices Mauro Carvalho Chehab
2015-09-11 15:19   ` Hans Verkuil
2015-11-23 18:09   ` Laurent Pinchart
2015-12-10 18:43     ` Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 07/18] [media] dvbdev: returns error if graph object creation fails Mauro Carvalho Chehab
2015-09-11 15:20   ` Hans Verkuil
2015-12-10 17:33     ` Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 08/18] [media] dvb core: must check dvb_create_media_graph() Mauro Carvalho Chehab
2015-09-11 15:22   ` Hans Verkuil [this message]
2015-09-06 17:30 ` [PATCH 09/18] [media] media-entity: enforce check of interface and links creation Mauro Carvalho Chehab
2015-09-11 15:23   ` Hans Verkuil
2015-09-06 17:30 ` [PATCH 10/18] [media] cx231xx: enforce check for graph creation Mauro Carvalho Chehab
2015-09-11 15:23   ` Hans Verkuil
2015-09-06 17:30 ` [PATCH 11/18] [media] au0828:: " Mauro Carvalho Chehab
2015-09-11 15:23   ` Hans Verkuil
2015-09-06 17:30 ` [PATCH 12/18] [media] media-entity: must check media_create_pad_link() Mauro Carvalho Chehab
2015-09-11 15:24   ` Hans Verkuil
2015-11-23 17:54   ` Laurent Pinchart
2015-12-10 19:13     ` Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 13/18] [media] media-entity.h: rename entity.type to entity.function Mauro Carvalho Chehab
2015-09-11 15:25   ` Hans Verkuil
2015-11-23 17:51   ` Laurent Pinchart
2015-11-24 10:32     ` Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 14/18] [media] media-device: export the entity function via new ioctl Mauro Carvalho Chehab
2015-09-11 15:26   ` Hans Verkuil
2015-11-23 17:46   ` Laurent Pinchart
2015-11-24 10:27     ` Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 15/18] [media] uapi/media.h: Rename entities types to functions Mauro Carvalho Chehab
2015-09-11 15:36   ` Hans Verkuil
2015-12-10 19:54     ` Mauro Carvalho Chehab
2015-09-06 17:30 ` [PATCH 16/18] [media] DocBook: update entities documentation Mauro Carvalho Chehab
2015-09-06 17:31 ` [PATCH 17/18] [media] dvbdev: move indirect links on dvr/demux to a separate function Mauro Carvalho Chehab
2015-09-11 15:38   ` Hans Verkuil
2015-09-06 17:31 ` [PATCH 18/18] [media] dvbdev: Don't create indirect links Mauro Carvalho Chehab
2015-09-11 15:48   ` Hans Verkuil
2015-12-10 20:20     ` Mauro Carvalho Chehab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55F2F1CA.9030201@xs4all.nl \
    --to=hverkuil@xs4all.nl \
    --cc=chehabrafael@gmail.com \
    --cc=corbet@lwn.net \
    --cc=crope@iki.fi \
    --cc=dheitmueller@kernellabs.com \
    --cc=hans.verkuil@cisco.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux@hauppauge.com \
    --cc=luis@debethencourt.com \
    --cc=mchehab@osg.samsung.com \
    --cc=mkrufky@linuxtv.org \
    --cc=olli.salonen@iki.fi \
    --cc=stefanr@s5r6.in-berlin.de \
    --cc=zzam@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).