Commit 971740a4 authored by Ville Syrjälä's avatar Ville Syrjälä
Browse files

drm: Warn when freeing a framebuffer that's still on a list



Sprinkle some extra WARNs around so that we might catch
premature framebuffer destruction more readily.

Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231211081625.25704-2-ville.syrjala@linux.intel.com


Acked-by: default avatarJavier Martinez Canillas <javierm@redhat.com>
parent cb4daf27
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -461,6 +461,7 @@ int drm_mode_rmfb(struct drm_device *dev, u32 fb_id,

		INIT_WORK_ONSTACK(&arg.work, drm_mode_rmfb_work_fn);
		INIT_LIST_HEAD(&arg.fbs);
		drm_WARN_ON(dev, !list_empty(&fb->filp_head));
		list_add_tail(&fb->filp_head, &arg.fbs);

		schedule_work(&arg.work);
@@ -827,6 +828,8 @@ void drm_framebuffer_free(struct kref *kref)
			container_of(kref, struct drm_framebuffer, base.refcount);
	struct drm_device *dev = fb->dev;

	drm_WARN_ON(dev, !list_empty(&fb->filp_head));

	/*
	 * The lookup idr holds a weak reference, which has not necessarily been
	 * removed at this point. Check for that.
@@ -1119,7 +1122,7 @@ void drm_framebuffer_remove(struct drm_framebuffer *fb)

	dev = fb->dev;

	WARN_ON(!list_empty(&fb->filp_head));
	drm_WARN_ON(dev, !list_empty(&fb->filp_head));

	/*
	 * drm ABI mandates that we remove any deleted framebuffers from active