V4L/DVB (7802): tuner: Failures at tuner_attach were producing OOPS
As reported by Mike Galbraith <efault@gmx.de>: [ 13.666587] TUNER: Unable to find symbol tda829x_probe() [ 13.674638] tuner' 1-004b: chip found @ 0x96 (saa7133[0]) [ 13.691175] DVB: Unable to find symbol tda9887_attach() [ 13.698968] BUG: unable to handle kernel NULL pointer dereference at 0000000000000000 [ 13.709509] IP: [<ffffffff80302934>] strlcpy+0x11/0x36 [ 13.711135] PGD be167067 PUD be140067 PMD 0 [ 13.711137] Oops: 0000 [1] SMP Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
Родитель
d557dab5de
Коммит
09fee5f821
|
@ -340,16 +340,6 @@ static void tuner_i2c_address_check(struct tuner *t)
|
||||||
tuner_warn("====================== WARNING! ======================\n");
|
tuner_warn("====================== WARNING! ======================\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void attach_tda829x(struct tuner *t)
|
|
||||||
{
|
|
||||||
struct tda829x_config cfg = {
|
|
||||||
.lna_cfg = t->config,
|
|
||||||
.tuner_callback = t->tuner_callback,
|
|
||||||
};
|
|
||||||
dvb_attach(tda829x_attach,
|
|
||||||
&t->fe, t->i2c->adapter, t->i2c->addr, &cfg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct xc5000_config xc5000_cfg;
|
static struct xc5000_config xc5000_cfg;
|
||||||
|
|
||||||
static void set_type(struct i2c_client *c, unsigned int type,
|
static void set_type(struct i2c_client *c, unsigned int type,
|
||||||
|
@ -385,12 +375,19 @@ static void set_type(struct i2c_client *c, unsigned int type,
|
||||||
|
|
||||||
switch (t->type) {
|
switch (t->type) {
|
||||||
case TUNER_MT2032:
|
case TUNER_MT2032:
|
||||||
dvb_attach(microtune_attach,
|
if (!dvb_attach(microtune_attach,
|
||||||
&t->fe, t->i2c->adapter, t->i2c->addr);
|
&t->fe, t->i2c->adapter, t->i2c->addr))
|
||||||
|
goto attach_failed;
|
||||||
break;
|
break;
|
||||||
case TUNER_PHILIPS_TDA8290:
|
case TUNER_PHILIPS_TDA8290:
|
||||||
{
|
{
|
||||||
attach_tda829x(t);
|
struct tda829x_config cfg = {
|
||||||
|
.lna_cfg = t->config,
|
||||||
|
.tuner_callback = t->tuner_callback,
|
||||||
|
};
|
||||||
|
if (!dvb_attach(tda829x_attach, &t->fe, t->i2c->adapter,
|
||||||
|
t->i2c->addr, &cfg))
|
||||||
|
goto attach_failed;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TUNER_TEA5767:
|
case TUNER_TEA5767:
|
||||||
|
@ -441,8 +438,9 @@ static void set_type(struct i2c_client *c, unsigned int type,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TUNER_TDA9887:
|
case TUNER_TDA9887:
|
||||||
dvb_attach(tda9887_attach,
|
if (!dvb_attach(tda9887_attach,
|
||||||
&t->fe, t->i2c->adapter, t->i2c->addr);
|
&t->fe, t->i2c->adapter, t->i2c->addr))
|
||||||
|
goto attach_failed;
|
||||||
break;
|
break;
|
||||||
case TUNER_XC5000:
|
case TUNER_XC5000:
|
||||||
{
|
{
|
||||||
|
|
Загрузка…
Ссылка в новой задаче