mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2026-01-04 22:32:19 +00:00
cec_unregister_adapter() assumes that the underlying adapter ops are
callable. For example, if the CEC adapter currently has a valid physical
address, then the unregistration procedure will invalidate the physical
address by setting it to f.f.f.f. Whence the following kernel oops
observed after removing the adv7511 module:
Unable to handle kernel execution of user memory at virtual address 0000000000000000
Internal error: Oops: 86000004 [#1] PREEMPT_RT SMP
Call trace:
0x0
adv7511_cec_adap_log_addr+0x1ac/0x1c8 [adv7511]
cec_adap_unconfigure+0x44/0x90 [cec]
__cec_s_phys_addr.part.0+0x68/0x230 [cec]
__cec_s_phys_addr+0x40/0x50 [cec]
cec_unregister_adapter+0xb4/0x118 [cec]
adv7511_remove+0x60/0x90 [adv7511]
i2c_device_remove+0x34/0xe0
device_release_driver_internal+0x114/0x1f0
driver_detach+0x54/0xe0
bus_remove_driver+0x60/0xd8
driver_unregister+0x34/0x60
i2c_del_driver+0x2c/0x68
adv7511_exit+0x1c/0x67c [adv7511]
__arm64_sys_delete_module+0x154/0x288
invoke_syscall+0x48/0x100
el0_svc_common.constprop.0+0x48/0xe8
do_el0_svc+0x28/0x88
el0_svc+0x1c/0x50
el0t_64_sync_handler+0xa8/0xb0
el0t_64_sync+0x15c/0x160
Code: bad PC value
---[ end trace 0000000000000000 ]---
Protect against this scenario by unregistering i2c_cec after
unregistering the CEC adapter. Duly disable the CEC clock afterwards
too.
Fixes:
|
||
|---|---|---|
| .. | ||
| adv7511 | ||
| analogix | ||
| cadence | ||
| imx | ||
| synopsys | ||
| cdns-dsi.c | ||
| chipone-icn6211.c | ||
| chrontel-ch7033.c | ||
| cros-ec-anx7688.c | ||
| display-connector.c | ||
| fsl-ldb.c | ||
| ite-it6505.c | ||
| ite-it66121.c | ||
| Kconfig | ||
| lontium-lt8912b.c | ||
| lontium-lt9211.c | ||
| lontium-lt9611.c | ||
| lontium-lt9611uxc.c | ||
| lvds-codec.c | ||
| Makefile | ||
| megachips-stdpxxxx-ge-b850v3-fw.c | ||
| nwl-dsi.c | ||
| nwl-dsi.h | ||
| nxp-ptn3460.c | ||
| panel.c | ||
| parade-ps8622.c | ||
| parade-ps8640.c | ||
| sii902x.c | ||
| sii9234.c | ||
| sil-sii8620.c | ||
| sil-sii8620.h | ||
| simple-bridge.c | ||
| tc358762.c | ||
| tc358764.c | ||
| tc358767.c | ||
| tc358768.c | ||
| tc358775.c | ||
| thc63lvd1024.c | ||
| ti-dlpc3433.c | ||
| ti-sn65dsi83.c | ||
| ti-sn65dsi86.c | ||
| ti-tfp410.c | ||
| ti-tpd12s015.c | ||