Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09fee5f8 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

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: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent d557dab5
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -340,16 +340,6 @@ static void tuner_i2c_address_check(struct tuner *t)
	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 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) {
	case TUNER_MT2032:
		dvb_attach(microtune_attach,
			   &t->fe, t->i2c->adapter, t->i2c->addr);
		if (!dvb_attach(microtune_attach,
			   &t->fe, t->i2c->adapter, t->i2c->addr))
			goto attach_failed;
		break;
	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;
	}
	case TUNER_TEA5767:
@@ -441,8 +438,9 @@ static void set_type(struct i2c_client *c, unsigned int type,
		break;
	}
	case TUNER_TDA9887:
		dvb_attach(tda9887_attach,
			   &t->fe, t->i2c->adapter, t->i2c->addr);
		if (!dvb_attach(tda9887_attach,
			   &t->fe, t->i2c->adapter, t->i2c->addr))
			goto attach_failed;
		break;
	case TUNER_XC5000:
	{