public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
From: Oliver Endriss <o.endriss@gmx.de>
To: "Bjørn Mork" <bjorn@mork.no>
Cc: linux-media@vger.kernel.org
Subject: Re: [PATCH v2 for v4l-dvb master] V4L/DVB: budget: Oops: "BUG: unable to handle kernel NULL pointer dereference"
Date: Thu, 25 Mar 2010 13:38:44 +0100	[thread overview]
Message-ID: <201003251338.45693@orion.escape-edv.de> (raw)
In-Reply-To: <1269437415-21761-1-git-send-email-bjorn@mork.no>

Hi,

Bjørn Mork wrote:
> Never call dvb_frontend_detach if we failed to attach a frontend. This fixes
> the following oops:
> 
> [    8.172997] DVB: registering new adapter (TT-Budget S2-1600 PCI)
> [    8.209018] adapter has MAC addr = 00:d0:5c:cc:a7:29
> [    8.328665] Intel ICH 0000:00:1f.5: PCI INT B -> GSI 17 (level, low) -> IRQ 17
> [    8.328753] Intel ICH 0000:00:1f.5: setting latency timer to 64
> [    8.562047] DVB: Unable to find symbol stv090x_attach()
> [    8.562117] BUG: unable to handle kernel NULL pointer dereference at 000000ac
> [    8.562239] IP: [<e08b04a3>] dvb_frontend_detach+0x4/0x67 [dvb_core]
> 
> Ref http://bugs.debian.org/575207
> 
> Also clean up if we are unable to register the tuner and LNB drivers
> 
> Signed-off-by: Bjørn Mork <bjorn@mork.no>
> Reported-by: Fladischer Michael <FladischerMichael@fladi.at>
> ---
> This version should apply to to git://linuxtv.org/v4l-dvb.git master on
> top of commit 30b8f0787e51a3ab0c447e0e3bf4aadc7caf9ffd. 
> 
> It is otherwise identical to the v2 patch for the upstream and stable
> kernel repositories.
> 
> 
>  drivers/media/dvb/ttpci/budget.c |   56 ++++++++++++++++++++-----------------
>  1 files changed, 30 insertions(+), 26 deletions(-)
> 
> diff --git a/drivers/media/dvb/ttpci/budget.c b/drivers/media/dvb/ttpci/budget.c
> index fccb6ad..918679e 100644
> --- a/drivers/media/dvb/ttpci/budget.c
> +++ b/drivers/media/dvb/ttpci/budget.c
> @@ -628,32 +628,36 @@ static void frontend_init(struct budget *budget)
>  						 &tt1600_stv6110x_config,
>  						 &budget->i2c_adap);
>  
> -				tt1600_stv090x_config.tuner_init	  = ctl->tuner_init;
> -				tt1600_stv090x_config.tuner_sleep	  = ctl->tuner_sleep;
> -				tt1600_stv090x_config.tuner_set_mode	  = ctl->tuner_set_mode;
> -				tt1600_stv090x_config.tuner_set_frequency = ctl->tuner_set_frequency;
> -				tt1600_stv090x_config.tuner_get_frequency = ctl->tuner_get_frequency;
> -				tt1600_stv090x_config.tuner_set_bandwidth = ctl->tuner_set_bandwidth;
> -				tt1600_stv090x_config.tuner_get_bandwidth = ctl->tuner_get_bandwidth;
> -				tt1600_stv090x_config.tuner_set_bbgain	  = ctl->tuner_set_bbgain;
> -				tt1600_stv090x_config.tuner_get_bbgain	  = ctl->tuner_get_bbgain;
> -				tt1600_stv090x_config.tuner_set_refclk	  = ctl->tuner_set_refclk;
> -				tt1600_stv090x_config.tuner_get_status	  = ctl->tuner_get_status;
> -
> -				/* call the init function once to initialize
> -				   tuner's clock output divider and demod's
> -				   master clock */
> -				if (budget->dvb_frontend->ops.init)
> -					budget->dvb_frontend->ops.init(budget->dvb_frontend);
> -
> -				dvb_attach(isl6423_attach,
> -					budget->dvb_frontend,
> -					&budget->i2c_adap,
> -					&tt1600_isl6423_config);
> -
> -			} else {
> -				dvb_frontend_detach(budget->dvb_frontend);
> -				budget->dvb_frontend = NULL;
> +				if (ctl) {
> +					tt1600_stv090x_config.tuner_init	  = ctl->tuner_init;
> +					tt1600_stv090x_config.tuner_sleep	  = ctl->tuner_sleep;
> +					tt1600_stv090x_config.tuner_set_mode	  = ctl->tuner_set_mode;
> +					tt1600_stv090x_config.tuner_set_frequency = ctl->tuner_set_frequency;
> +					tt1600_stv090x_config.tuner_get_frequency = ctl->tuner_get_frequency;
> +					tt1600_stv090x_config.tuner_set_bandwidth = ctl->tuner_set_bandwidth;
> +					tt1600_stv090x_config.tuner_get_bandwidth = ctl->tuner_get_bandwidth;
> +					tt1600_stv090x_config.tuner_set_bbgain	  = ctl->tuner_set_bbgain;
> +					tt1600_stv090x_config.tuner_get_bbgain	  = ctl->tuner_get_bbgain;
> +					tt1600_stv090x_config.tuner_set_refclk	  = ctl->tuner_set_refclk;
> +					tt1600_stv090x_config.tuner_get_status	  = ctl->tuner_get_status;
> +
> +					/* call the init function once to initialize
> +					   tuner's clock output divider and demod's
> +					   master clock */
> +					if (budget->dvb_frontend->ops.init)
> +						budget->dvb_frontend->ops.init(budget->dvb_frontend);
> +
> +					if (dvb_attach(isl6423_attach,
> +						       budget->dvb_frontend,
> +						       &budget->i2c_adap,
> +						       &tt1600_isl6423_config) == NULL) {
> +						printk("%s: No Intersil ISL6423 found!\n", __func__);
> +						goto error_out;
> +					}
> +				} else {
> +					printk("%s: No STV6110(A) Silicon Tuner found!\n", __func__);
> +					goto error_out;
> +				}
>  			}
>  		}
>  		break;


Looks fine.

Acked-by: Oliver Endriss <o.endriss@gmx.de>

CU
Oliver

-- 
----------------------------------------------------------------
VDR Remote Plugin 0.4.0: http://www.escape-edv.de/endriss/vdr/
4 MByte Mod: http://www.escape-edv.de/endriss/dvb-mem-mod/
Full-TS Mod: http://www.escape-edv.de/endriss/dvb-full-ts-mod/
----------------------------------------------------------------

  reply	other threads:[~2010-03-25 12:39 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-24 10:57 [PATCH] V4L/DVB: budget: Oops: "BUG: unable to handle kernel NULL pointer dereference" Bjørn Mork
2010-03-24 12:25 ` Oliver Endriss
2010-03-24 12:30   ` Bug#575207: Info received ([PATCH] V4L/DVB: budget: Oops: "BUG: unable to handle kernel NULL pointer dereference") Debian Bug Tracking System
2010-03-24 13:17   ` [PATCH v2] V4L/DVB: budget: Oops: "BUG: unable to handle kernel NULL pointer dereference" Bjørn Mork
2010-03-24 13:30     ` [PATCH v2 for v4l-dvb master] " Bjørn Mork
2010-03-25 12:38       ` Oliver Endriss [this message]
2010-04-19 18:21     ` [stable] [PATCH v2] " Greg KH
2010-04-22  8:53       ` Bjørn Mork

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=201003251338.45693@orion.escape-edv.de \
    --to=o.endriss@gmx.de \
    --cc=bjorn@mork.no \
    --cc=linux-media@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox