All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ville Syrjala <ville.syrjala@linux.intel.com>
To: dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org, stable@vger.kernel.org
Subject: [PATCH 01/12] drm/client: Fully protect modes[] with dev->mode_config.mutex
Date: Thu,  4 Apr 2024 23:33:25 +0300	[thread overview]
Message-ID: <20240404203336.10454-2-ville.syrjala@linux.intel.com> (raw)
In-Reply-To: <20240404203336.10454-1-ville.syrjala@linux.intel.com>

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

The modes[] array contains pointers to modes on the connectors'
mode lists, which are protected by dev->mode_config.mutex.
Thus we need to extend modes[] the same protection or by the
time we use it the elements may already be pointing to
freed/reused memory.

Cc: stable@vger.kernel.org
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/10583
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/drm_client_modeset.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index 871e4e2129d6..0683a129b362 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -777,6 +777,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
 	unsigned int total_modes_count = 0;
 	struct drm_client_offset *offsets;
 	unsigned int connector_count = 0;
+	/* points to modes protected by mode_config.mutex */
 	struct drm_display_mode **modes;
 	struct drm_crtc **crtcs;
 	int i, ret = 0;
@@ -845,7 +846,6 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
 		drm_client_pick_crtcs(client, connectors, connector_count,
 				      crtcs, modes, 0, width, height);
 	}
-	mutex_unlock(&dev->mode_config.mutex);
 
 	drm_client_modeset_release(client);
 
@@ -875,6 +875,7 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
 			modeset->y = offset->y;
 		}
 	}
+	mutex_unlock(&dev->mode_config.mutex);
 
 	mutex_unlock(&client->modeset_mutex);
 out:
-- 
2.43.2


  reply	other threads:[~2024-04-04 20:33 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-04 20:33 [PATCH 00/12] drm/client: Use after free and debug improvements Ville Syrjala
2024-04-04 20:33 ` Ville Syrjala [this message]
2024-04-05  3:24   ` [PATCH 01/12] drm/client: Fully protect modes[] with dev->mode_config.mutex Dmitry Baryshkov
2024-04-05 19:17     ` Ville Syrjälä
2024-04-05 20:39       ` Dmitry Baryshkov
2024-04-05 20:57         ` Ville Syrjälä
2024-04-04 20:33 ` [PATCH 02/12] drm/client: s/drm_connector_has_preferred_mode/drm_connector_preferred_mode/ Ville Syrjala
2024-04-05  3:27   ` Dmitry Baryshkov
2024-04-04 20:33 ` [PATCH 03/12] drm/client: Use drm_mode_destroy() Ville Syrjala
2024-04-05  3:28   ` Dmitry Baryshkov
2024-04-04 20:33 ` [PATCH 04/12] drm/client: Add a FIXME around crtc->mode usage Ville Syrjala
2024-04-05  3:32   ` Dmitry Baryshkov
2024-04-05 19:40     ` Ville Syrjälä
2024-04-04 20:33 ` [PATCH 05/12] drm/client: Nuke outdated fastboot comment Ville Syrjala
2024-04-05  3:33   ` Dmitry Baryshkov
2024-04-04 20:33 ` [PATCH 06/12] drm/client: Constify modes Ville Syrjala
2024-04-05  7:01   ` kernel test robot
2024-04-06 21:59   ` kernel test robot
2024-04-04 20:33 ` [PATCH 07/12] drm/client: Use array notation for function arguments Ville Syrjala
2024-04-05  8:02   ` Thomas Zimmermann
2024-04-04 20:33 ` [PATCH 08/12] drm/client: Extract drm_connector_first_mode() Ville Syrjala
2024-04-05  8:26   ` Jani Nikula
2024-04-04 20:33 ` [PATCH 09/12] drm/client: Switch to per-device debugs Ville Syrjala
2024-04-04 20:33 ` [PATCH 10/12] drm/client: Use [CONNECTOR:%d:%s] formatting Ville Syrjala
2024-04-05  8:23   ` Jani Nikula
2024-04-05 20:12     ` Ville Syrjälä
2024-04-04 20:33 ` [PATCH 11/12] drm/client: Streamline mode selection debugs Ville Syrjala
2024-04-05  7:49   ` Thomas Zimmermann
2024-04-05  7:57   ` Thomas Zimmermann
2024-04-05 19:58     ` Ville Syrjälä
2024-04-08  7:46       ` Thomas Zimmermann
2024-04-08 17:26         ` Ville Syrjälä
2024-04-09  8:01           ` Thomas Zimmermann
2024-04-04 20:33 ` [PATCH 12/12] drm/probe-helper: Switch to per-device debugs Ville Syrjala
2024-04-05  8:25   ` Jani Nikula
2024-04-05  8:30     ` Thomas Zimmermann
2024-04-04 21:10 ` ✗ Fi.CI.CHECKPATCH: warning for drm/client: Use after free and debug improvements Patchwork
2024-04-04 21:10 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-04-04 21:22 ` ✓ Fi.CI.BAT: success " Patchwork
2024-04-05  8:04 ` [PATCH 00/12] " Thomas Zimmermann
2024-04-05 14:02 ` ✗ Fi.CI.IGT: failure for " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240404203336.10454-2-ville.syrjala@linux.intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.