mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
b9c97c67fd
If m88d3103 chip ID is not recognized, the device is not initialized. However, it returns from probe without any error, causing this OOPS: [ 7.689289] Unable to handle kernel NULL pointer dereference at virtual address 00000000 [ 7.689297] pgd = 7b0bd7a7 [ 7.689302] [00000000] *pgd=00000000 [ 7.689318] Internal error: Oops: 80000005 [#1] SMP ARM [ 7.689322] Modules linked in: dvb_usb_dvbsky(+) m88ds3103 dvb_usb_v2 dvb_core videobuf2_vmalloc videobuf2_memops videobuf2_core crc32_arm_ce videodev media [ 7.689358] CPU: 3 PID: 197 Comm: systemd-udevd Not tainted 4.15.0-mcc+ #23 [ 7.689361] Hardware name: BCM2835 [ 7.689367] PC is at 0x0 [ 7.689382] LR is at m88ds3103_attach+0x194/0x1d0 [m88ds3103] [ 7.689386] pc : [<00000000>] lr : [<bf0ae1ec>] psr: 60000013 [ 7.689391] sp : ed8e5c20 ip : ed8c1e00 fp : ed8945c0 [ 7.689395] r10: ed894000 r9 : ed894378 r8 : eda736c0 [ 7.689400] r7 : ed894070 r6 : ed8e5c44 r5 : bf0bb040 r4 : eda77600 [ 7.689405] r3 : 00000000 r2 : 00000000 r1 : 00000000 r0 : eda77600 [ 7.689412] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none [ 7.689417] Control: 10c5383d Table: 2d8e806a DAC: 00000051 [ 7.689423] Process systemd-udevd (pid: 197, stack limit = 0xe9dbfb63) [ 7.689428] Stack: (0xed8e5c20 to 0xed8e6000) [ 7.689439] 5c20: ed853a80 eda73640 ed894000 ed8942c0 ed853a80 bf0b9e98 ed894070 bf0b9f10 [ 7.689449] 5c40: 00000000 00000000 bf08c17c c08dfc50 00000000 00000000 00000000 00000000 [ 7.689459] 5c60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 7.689468] 5c80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 7.689479] 5ca0: 00000000 00000000 ed8945c0 ed8942c0 ed894000 ed894830 bf0b9e98 00000000 [ 7.689490] 5cc0: ed894378 bf0a3cb4 bf0bc3b0 0000533b ed920540 00000000 00000034 bf0a6434 [ 7.689500] 5ce0: ee952070 ed826600 bf0a7038 bf0a2dd8 00000001 bf0a6768 bf0a2f90 ed8943c0 [ 7.689511] 5d00: 00000000 c08eca68 ed826620 ed826620 00000000 ee952070 bf0bc034 ee952000 [ 7.689521] 5d20: ed826600 bf0bb080 ffffffed c0aa9e9c c0aa9dac ed826620 c16edf6c c168c2c8 [ 7.689531] 5d40: c16edf70 00000000 bf0bc034 0000000d 00000000 c08e268c bf0bb080 ed826600 [ 7.689541] 5d60: bf0bc034 ed826654 ed826620 bf0bc034 c164c8bc 00000000 00000001 00000000 [ 7.689553] 5d80: 00000028 c08e2948 00000000 bf0bc034 c08e2848 c08e0778 ee9f0a58 ed88bab4 [ 7.689563] 5da0: bf0bc034 ed90ba80 c168c1f0 c08e1934 bf0bb3bc c17045ac bf0bc034 c164c8bc [ 7.689574] 5dc0: bf0bc034 bf0bb3bc ed91f564 c08e34ec bf0bc000 c164c8bc bf0bc034 c0aa8dc4 [ 7.689584] 5de0: ffffe000 00000000 bf0bf000 ed91f600 ed91f564 c03021e4 00000001 00000000 [ 7.689595] 5e00: c166e040 8040003f ed853a80 bf0bc448 00000000 c1678174 ed853a80 f0f22000 [ 7.689605] 5e20: f0f21fff 8040003f 014000c0 ed91e700 ed91e700 c16d8e68 00000001 ed91e6c0 [ 7.689615] 5e40: bf0bc400 00000001 bf0bc400 ed91f564 00000001 00000000 00000028 c03c9a24 [ 7.689625] 5e60: 00000001 c03c8c94 ed8e5f50 ed8e5f50 00000001 bf0bc400 ed91f540 c03c8cb0 [ 7.689637] 5e80: bf0bc40c 00007fff bf0bc400 c03c60b0 00000000 bf0bc448 00000028 c0e09684 [ 7.689647] 5ea0: 00000002 bf0bc530 c1234bf8 bf0bc5dc bf0bc514 c10ebbe8 ffffe000 bf000000 [ 7.689657] 5ec0: 00011538 00000000 ed8e5f48 00000000 00000000 00000000 00000000 00000000 [ 7.689666] 5ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 7.689676] 5f00: 00000000 00000000 7fffffff 00000000 00000013 b6e55a18 0000017b c0309104 [ 7.689686] 5f20: ed8e4000 00000000 00510af0 c03c9430 7fffffff 00000000 00000003 00000000 [ 7.689697] 5f40: 00000000 f0f0f000 00011538 00000000 f0f107b0 f0f0f000 00011538 f0f1fdb8 [ 7.689707] 5f60: f0f1fbe8 f0f1b974 00004000 000041e0 bf0bc3d0 00000001 00000000 000024c4 [ 7.689717] 5f80: 0000002d 0000002e 00000019 00000000 00000010 00000000 16894000 00000000 [ 7.689727] 5fa0: 00000000 c0308f20 16894000 00000000 00000013 b6e55a18 00000000 b6e5652c [ 7.689737] 5fc0: 16894000 00000000 00000000 0000017b 00020000 00508110 00000000 00510af0 [ 7.689748] 5fe0: bef68948 bef68938 b6e4d3d0 b6d32590 60000010 00000013 00000000 00000000 [ 7.689790] [<bf0ae1ec>] (m88ds3103_attach [m88ds3103]) from [<bf0b9f10>] (dvbsky_s960c_attach+0x78/0x280 [dvb_usb_dvbsky]) [ 7.689821] [<bf0b9f10>] (dvbsky_s960c_attach [dvb_usb_dvbsky]) from [<bf0a3cb4>] (dvb_usbv2_probe+0xa3c/0x1024 [dvb_usb_v2]) [ 7.689849] [<bf0a3cb4>] (dvb_usbv2_probe [dvb_usb_v2]) from [<c0aa9e9c>] (usb_probe_interface+0xf0/0x2a8) [ 7.689869] [<c0aa9e9c>] (usb_probe_interface) from [<c08e268c>] (driver_probe_device+0x2f8/0x4b4) [ 7.689881] [<c08e268c>] (driver_probe_device) from [<c08e2948>] (__driver_attach+0x100/0x11c) [ 7.689895] [<c08e2948>] (__driver_attach) from [<c08e0778>] (bus_for_each_dev+0x4c/0x9c) [ 7.689909] [<c08e0778>] (bus_for_each_dev) from [<c08e1934>] (bus_add_driver+0x1c0/0x264) [ 7.689919] [<c08e1934>] (bus_add_driver) from [<c08e34ec>] (driver_register+0x78/0xf4) [ 7.689931] [<c08e34ec>] (driver_register) from [<c0aa8dc4>] (usb_register_driver+0x70/0x134) [ 7.689946] [<c0aa8dc4>] (usb_register_driver) from [<c03021e4>] (do_one_initcall+0x44/0x168) [ 7.689963] [<c03021e4>] (do_one_initcall) from [<c03c9a24>] (do_init_module+0x64/0x1f4) [ 7.689979] [<c03c9a24>] (do_init_module) from [<c03c8cb0>] (load_module+0x20a0/0x25c8) [ 7.689993] [<c03c8cb0>] (load_module) from [<c03c9430>] (SyS_finit_module+0xb4/0xec) [ 7.690007] [<c03c9430>] (SyS_finit_module) from [<c0308f20>] (ret_fast_syscall+0x0/0x54) [ 7.690018] Code: bad PC value This may happen on normal circumstances, if, for some reason, the demod hangs and start returning an invalid chip ID: [ 10.394395] m88ds3103 3-0068: Unknown device. Chip_id=00 So, change the logic to cause probe to fail with -ENODEV, preventing the OOPS. Detected while testing DVB MMAP patches on Raspberry Pi 3 with DVBSky S960CI. Cc: stable@vger.kernel.org Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> |
||
---|---|---|
.. | ||
drx39xyj | ||
a8293.c | ||
a8293.h | ||
af9013.c | ||
af9013.h | ||
af9013_priv.h | ||
af9033.c | ||
af9033.h | ||
af9033_priv.h | ||
as102_fe.c | ||
as102_fe.h | ||
as102_fe_types.h | ||
ascot2e.c | ||
ascot2e.h | ||
atbm8830.c | ||
atbm8830.h | ||
atbm8830_priv.h | ||
au8522.h | ||
au8522_common.c | ||
au8522_decoder.c | ||
au8522_dig.c | ||
au8522_priv.h | ||
bcm3510.c | ||
bcm3510.h | ||
bcm3510_priv.h | ||
bsbe1-d01a.h | ||
bsbe1.h | ||
bsru6.h | ||
cx22700.c | ||
cx22700.h | ||
cx22702.c | ||
cx22702.h | ||
cx24110.c | ||
cx24110.h | ||
cx24113.c | ||
cx24113.h | ||
cx24116.c | ||
cx24116.h | ||
cx24117.c | ||
cx24117.h | ||
cx24120.c | ||
cx24120.h | ||
cx24123.c | ||
cx24123.h | ||
cxd2820r.h | ||
cxd2820r_c.c | ||
cxd2820r_core.c | ||
cxd2820r_priv.h | ||
cxd2820r_t.c | ||
cxd2820r_t2.c | ||
cxd2841er.c | ||
cxd2841er.h | ||
cxd2841er_priv.h | ||
dib0070.c | ||
dib0070.h | ||
dib0090.c | ||
dib0090.h | ||
dib3000.h | ||
dib3000mb.c | ||
dib3000mb_priv.h | ||
dib3000mc.c | ||
dib3000mc.h | ||
dib7000m.c | ||
dib7000m.h | ||
dib7000p.c | ||
dib7000p.h | ||
dib8000.c | ||
dib8000.h | ||
dib9000.c | ||
dib9000.h | ||
dibx000_common.c | ||
dibx000_common.h | ||
drxd.h | ||
drxd_firm.c | ||
drxd_firm.h | ||
drxd_hard.c | ||
drxd_map_firm.h | ||
drxk.h | ||
drxk_hard.c | ||
drxk_hard.h | ||
drxk_map.h | ||
ds3000.c | ||
ds3000.h | ||
dvb-pll.c | ||
dvb-pll.h | ||
dvb_dummy_fe.c | ||
dvb_dummy_fe.h | ||
ec100.c | ||
ec100.h | ||
eds1547.h | ||
gp8psk-fe.c | ||
gp8psk-fe.h | ||
helene.c | ||
helene.h | ||
horus3a.c | ||
horus3a.h | ||
isl6405.c | ||
isl6405.h | ||
isl6421.c | ||
isl6421.h | ||
isl6423.c | ||
isl6423.h | ||
itd1000.c | ||
itd1000.h | ||
itd1000_priv.h | ||
ix2505v.c | ||
ix2505v.h | ||
Kconfig | ||
l64781.c | ||
l64781.h | ||
lg2160.c | ||
lg2160.h | ||
lgdt330x.c | ||
lgdt330x.h | ||
lgdt330x_priv.h | ||
lgdt3305.c | ||
lgdt3305.h | ||
lgdt3306a.c | ||
lgdt3306a.h | ||
lgs8gl5.c | ||
lgs8gl5.h | ||
lgs8gxx.c | ||
lgs8gxx.h | ||
lgs8gxx_priv.h | ||
lnbh24.h | ||
lnbh25.c | ||
lnbh25.h | ||
lnbp21.c | ||
lnbp21.h | ||
lnbp22.c | ||
lnbp22.h | ||
m88ds3103.c | ||
m88ds3103.h | ||
m88ds3103_priv.h | ||
m88rs2000.c | ||
m88rs2000.h | ||
Makefile | ||
mb86a16.c | ||
mb86a16.h | ||
mb86a16_priv.h | ||
mb86a20s.c | ||
mb86a20s.h | ||
mn88472.c | ||
mn88472.h | ||
mn88472_priv.h | ||
mn88473.c | ||
mn88473.h | ||
mn88473_priv.h | ||
mt312.c | ||
mt312.h | ||
mt312_priv.h | ||
mt352.c | ||
mt352.h | ||
mt352_priv.h | ||
mxl5xx.c | ||
mxl5xx.h | ||
mxl5xx_defs.h | ||
mxl5xx_regs.h | ||
nxt200x.c | ||
nxt200x.h | ||
nxt6000.c | ||
nxt6000.h | ||
nxt6000_priv.h | ||
or51132.c | ||
or51132.h | ||
or51211.c | ||
or51211.h | ||
rtl2830.c | ||
rtl2830.h | ||
rtl2830_priv.h | ||
rtl2832.c | ||
rtl2832.h | ||
rtl2832_priv.h | ||
rtl2832_sdr.c | ||
rtl2832_sdr.h | ||
s5h1409.c | ||
s5h1409.h | ||
s5h1411.c | ||
s5h1411.h | ||
s5h1420.c | ||
s5h1420.h | ||
s5h1420_priv.h | ||
s5h1432.c | ||
s5h1432.h | ||
s921.c | ||
s921.h | ||
si21xx.c | ||
si21xx.h | ||
si2165.c | ||
si2165.h | ||
si2165_priv.h | ||
si2168.c | ||
si2168.h | ||
si2168_priv.h | ||
sp2.c | ||
sp2.h | ||
sp2_priv.h | ||
sp887x.c | ||
sp887x.h | ||
sp8870.c | ||
sp8870.h | ||
stb0899_algo.c | ||
stb0899_cfg.h | ||
stb0899_drv.c | ||
stb0899_drv.h | ||
stb0899_priv.h | ||
stb0899_reg.h | ||
stb6000.c | ||
stb6000.h | ||
stb6100.c | ||
stb6100.h | ||
stb6100_cfg.h | ||
stb6100_proc.h | ||
stv090x.c | ||
stv090x.h | ||
stv090x_priv.h | ||
stv090x_reg.h | ||
stv0288.c | ||
stv0288.h | ||
stv0297.c | ||
stv0297.h | ||
stv0299.c | ||
stv0299.h | ||
stv0367.c | ||
stv0367.h | ||
stv0367_defs.h | ||
stv0367_priv.h | ||
stv0367_regs.h | ||
stv0900.h | ||
stv0900_core.c | ||
stv0900_init.h | ||
stv0900_priv.h | ||
stv0900_reg.h | ||
stv0900_sw.c | ||
stv0910.c | ||
stv0910.h | ||
stv0910_regs.h | ||
stv6110.c | ||
stv6110.h | ||
stv6110x.c | ||
stv6110x.h | ||
stv6110x_priv.h | ||
stv6110x_reg.h | ||
stv6111.c | ||
stv6111.h | ||
tc90522.c | ||
tc90522.h | ||
tda665x.c | ||
tda665x.h | ||
tda826x.c | ||
tda826x.h | ||
tda1002x.h | ||
tda1004x.c | ||
tda1004x.h | ||
tda8083.c | ||
tda8083.h | ||
tda8261.c | ||
tda8261.h | ||
tda8261_cfg.h | ||
tda10021.c | ||
tda10023.c | ||
tda10048.c | ||
tda10048.h | ||
tda10071.c | ||
tda10071.h | ||
tda10071_priv.h | ||
tda10086.c | ||
tda10086.h | ||
tda18271c2dd.c | ||
tda18271c2dd.h | ||
tda18271c2dd_maps.h | ||
tdhd1.h | ||
ts2020.c | ||
ts2020.h | ||
tua6100.c | ||
tua6100.h | ||
ves1x93.c | ||
ves1x93.h | ||
ves1820.c | ||
ves1820.h | ||
z0194a.h | ||
zd1301_demod.c | ||
zd1301_demod.h | ||
zl10036.c | ||
zl10036.h | ||
zl10039.c | ||
zl10039.h | ||
zl10353.c | ||
zl10353.h | ||
zl10353_priv.h |