All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Walls <awalls@md.metrocast.net>
To: Jiri Slaby <jslaby@suse.cz>
Cc: mchehab@infradead.org, linux-kernel@vger.kernel.org,
	jirislaby@gmail.com, Tejun Heo <tj@kernel.org>,
	Ian Armstrong <ian@iarmst.demon.co.uk>,
	ivtv-devel@ivtvdriver.org, linux-media@vger.kernel.org
Subject: Re: [PATCH] VIDEO: ivtvfb, remove unneeded NULL test
Date: Sun, 04 Jul 2010 00:11:47 -0400	[thread overview]
Message-ID: <1278216707.2644.32.camel@localhost> (raw)
In-Reply-To: <1277206910-27228-1-git-send-email-jslaby@suse.cz>

On Tue, 2010-06-22 at 13:41 +0200, Jiri Slaby wrote:
> Stanse found that in ivtvfb_callback_cleanup there is an unneeded test
> for itv being NULL. But itv is initialized as container_of with
> non-zero offset, so it is never NULL (even if v4l2_dev is). This was
> found because itv is dereferenced earlier than the test.
> 
> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
> Cc: Andy Walls <awalls@md.metrocast.net>
> Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
> Cc: Tejun Heo <tj@kernel.org>
> Cc: Ian Armstrong <ian@iarmst.demon.co.uk>
> Cc: ivtv-devel@ivtvdriver.org
> Cc: linux-media@vger.kernel.org
> ---
>  drivers/media/video/ivtv/ivtvfb.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/media/video/ivtv/ivtvfb.c b/drivers/media/video/ivtv/ivtvfb.c
> index 9ff3425..5dc460e 100644
> --- a/drivers/media/video/ivtv/ivtvfb.c
> +++ b/drivers/media/video/ivtv/ivtvfb.c
> @@ -1219,7 +1219,7 @@ static int ivtvfb_callback_cleanup(struct device *dev, void *p)
>  	struct ivtv *itv = container_of(v4l2_dev, struct ivtv, v4l2_dev);
>  	struct osd_info *oi = itv->osd_info;
>  
> -	if (itv && (itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) {
> +	if (itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT) {
>  		if (unregister_framebuffer(&itv->osd_info->ivtvfb_info)) {
>  			IVTVFB_WARN("Framebuffer %d is in use, cannot unload\n",
>  				       itv->instance);

Jiri,

You missed an identical instance of the useless test 10 lines prior in
ivtvfb_callback_init(). :)

How about the patch below, instead?

Regards,
Andy

[PATCH] VIDEO: ivtvfb, fix NULL check

Jiri Slaby reported that stanse found ivtvfb_callback_cleanup has an
unneeded test for itv being NULL. itv was initialized as container_of
with non-zero offset, so it was never NULL (even if v4l2_dev was).

This fix now checks for v4l2_dev being NULL, and not itv.

Thanks to Jiri Slaby for reporting this problem and providing an initial
patch.

Reported-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Andy Walls <awalls@md.metrocast.net>
Cc: Mauro Carvalho Chehab <mchehab@infradead.org>
Cc: Tejun Heo <tj@kernel.org>
Cc: Ian Armstrong <ian@iarmst.demon.co.uk>
Cc: ivtv-devel@ivtvdriver.org
Cc: linux-media@vger.kernel.org


 drivers/media/video/ivtv/ivtvfb.c |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/drivers/media/video/ivtv/ivtvfb.c b/drivers/media/video/ivtv/ivtvfb
index 9ff3425..2b3259c 100644
--- a/drivers/media/video/ivtv/ivtvfb.c
+++ b/drivers/media/video/ivtv/ivtvfb.c
@@ -1201,9 +1201,14 @@ static int ivtvfb_init_card(struct ivtv *itv)
 static int __init ivtvfb_callback_init(struct device *dev, void *p)
 {
        struct v4l2_device *v4l2_dev = dev_get_drvdata(dev);
-       struct ivtv *itv = container_of(v4l2_dev, struct ivtv, v4l2_dev);
+       struct ivtv *itv;
 
-       if (itv && (itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) {
+       if (v4l2_dev == NULL)
+               return 0;
+
+       itv = container_of(v4l2_dev, struct ivtv, v4l2_dev);
+
+       if (itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT) {
                if (ivtvfb_init_card(itv) == 0) {
                        IVTVFB_INFO("Framebuffer registered on %s\n",
                                        itv->v4l2_dev.name);
@@ -1216,10 +1221,16 @@ static int __init ivtvfb_callback_init(struct device *de
 static int ivtvfb_callback_cleanup(struct device *dev, void *p)
 {
        struct v4l2_device *v4l2_dev = dev_get_drvdata(dev);
-       struct ivtv *itv = container_of(v4l2_dev, struct ivtv, v4l2_dev);
-       struct osd_info *oi = itv->osd_info;
+       struct ivtv *itv;
+       struct osd_info *oi;
+
+       if (v4l2_dev == NULL)
+               return 0;
+
+       itv = container_of(v4l2_dev, struct ivtv, v4l2_dev);
+       oi = itv->osd_info;
 
-       if (itv && (itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT)) {
+       if (itv->v4l2_cap & V4L2_CAP_VIDEO_OUTPUT) {
                if (unregister_framebuffer(&itv->osd_info->ivtvfb_info)) {
                        IVTVFB_WARN("Framebuffer %d is in use, cannot unload\n",
                                       itv->instance);



  reply	other threads:[~2010-07-04  4:12 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-22 11:41 [PATCH] VIDEO: ivtvfb, remove unneeded NULL test Jiri Slaby
2010-07-04  4:11 ` Andy Walls [this message]
2010-07-04  7:24   ` Jiri Slaby
2010-07-04 13:22     ` Andy Walls
2010-07-05  7:10       ` Jiri Slaby
2010-07-05 16:19         ` Andy Walls
2010-07-19 17:39           ` [PATCH 1/1] " Jiri Slaby
2010-07-19 21:39             ` Andy Walls

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=1278216707.2644.32.camel@localhost \
    --to=awalls@md.metrocast.net \
    --cc=ian@iarmst.demon.co.uk \
    --cc=ivtv-devel@ivtvdriver.org \
    --cc=jirislaby@gmail.com \
    --cc=jslaby@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@infradead.org \
    --cc=tj@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.