[PATCH 0/3] drm/i915: Fix harmfull driver register/unregister assymetry
Janusz Krzysztofik
janusz.krzysztofik at linux.intel.com
Thu Feb 6 18:07:38 UTC 2025
We return immediately from i915_driver_register() if drm_dev_register()
fails, skipping remaining registration steps. However, the _unregister()
counterpart called at device remove knows nothing about that skip and
executes reverts for all those steps. For that to work correctly, those
revert functions must be resistant to being called even on uninitialized
objects, or we must not skip their initialization.
Three cases have been identified and fixes proposed. Call traces are
taken from CI results of igt at i915_driver_load@reload-with-fault-injection
execution, reported to several separate Gitlab issues (links provided).
Immediate return was introduced to i915_driver_register() by commit
ec3e00b4ee27 ("drm/i915: stop registering if drm_dev_register() fails"),
however, quite a few things have changed since then. That's why I haven't
mentioned it in a Fixes: tag to avoid it being picked up by stable, which
I haven't tested.
Janusz Krzysztofik (3):
drm/i915: Fix PM reference not released if device register fails
drm/i915: Fix GT sysfs unregister tried even if not registered
drm/i915: Fix device sysfs teardown tried even if not set up
drivers/gpu/drm/i915/gt/intel_gt_sysfs.c | 3 +++
drivers/gpu/drm/i915/i915_driver.c | 6 ++++--
drivers/gpu/drm/i915/i915_sysfs.c | 3 +++
3 files changed, 10 insertions(+), 2 deletions(-)
--
2.47.1
More information about the dri-devel
mailing list