While reworking the drm/msm driver to use devm_drm_bridge_add() I didn't notice that the drm_bridge instances are allocated with the drm_device used as a lifetime parameter instead of corresponding platform_device. This mostly works fine, in rare cases of device reprobing resulting in the oops such as the following: Call trace: of_drm_find_bridge+0x54/0xa4 drm_of_find_panel_or_bridge+0xb8/0xdc devm_drm_of_get_bridge+0x3c/0x8c msm_dsi_manager_ext_bridge_init+0x4c/0x19c msm_dsi_modeset_init+0x70/0x118 _dpu_kms_drm_obj_init+0xec/0x6f0 dpu_kms_hw_init+0x310/0x458 msm_drm_kms_init+0x84/0x328 msm_drm_bind+0x230/0x43c try_to_bring_up_aggregate_device+0x164/0x1d0 __component_add+0xa8/0x170 component_add+0x14/0x20 dsi_dev_attach+0x20/0x2c dsi_host_attach+0x9c/0x144 devm_mipi_dsi_attach+0x34/0xb4 lt9611uxc_attach_dsi.isra.0+0x84/0xfc lt9611uxc_probe+0x5ac/0x66c i2c_device_probe+0x148/0x290 really_probe+0x148/0x2ac __driver_probe_device+0x78/0x12c driver_probe_device+0x3c/0x160 __device_attach_driver+0xb8/0x138 bus_for_each_drv+0x80/0xdc __device_attach+0x9c/0x188 device_initial_probe+0x14/0x20 bus_probe_device+0xac/0xb0 deferred_probe_work_func+0x8c/0xc8 process_one_work+0x1ec/0x51c worker_thread+0x1ec/0x3e4 kthread+0x120/0x124 ret_from_fork+0x10/0x20 Dmitry Baryshkov (3): drm/msm/dsi: use correct lifetime device for devm_drm_bridge_add drm/msm/hdmi: use correct lifetime device for devm_drm_bridge_add drm/msm/dp: use correct lifetime device for devm_drm_bridge_add drivers/gpu/drm/msm/dp/dp_drm.c | 2 +- drivers/gpu/drm/msm/dsi/dsi_manager.c | 2 +- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) -- 2.39.2