[PATCH 0/3] drm/i915: Fix harmfull driver register/unregister assymetry

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@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




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux