drm/kms: Catch mode_object lifetime errors
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 14 Jun 2019 06:17:23 +0000 (08:17 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 10 Jul 2019 15:17:14 +0000 (17:17 +0200)
commit4f5368b5541a902f6596558b05f5c21a9770dd32
tree8630efb14338199c1333ca223d1d1a3b3d6bac3c
parentd006a9b63d4bbb3eb1e2e616712d45acfcda7042
drm/kms: Catch mode_object lifetime errors

Only dynamic mode objects, i.e. those which are refcounted and have a free
callback, can be added while the overall drm_device is visible to
userspace. All others must be added before drm_dev_register and
removed after drm_dev_unregister.

Small issue around drivers still using the load/unload callbacks, we
need to make sure we set dev->registered so that load/unload code in
these callbacks doesn't trigger false warnings. Only a small
adjustement in drm_dev_register was needed.

Motivated by some irc discussions about object ids of dynamic objects
like blobs become invalid, and me going on a bit an audit spree.

Reviewed-by: Sean Paul <sean@poorly.run>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190614061723.1173-1-daniel.vetter@ffwll.ch
drivers/gpu/drm/drm_drv.c
drivers/gpu/drm/drm_mode_object.c