All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: DRI Development <dri-devel@lists.freedesktop.org>
Cc: "H.J. Lu" <hjl.tools@gmail.com>, David Airlie <airlied@linux.ie>,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
	Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [PATCH] drm: Fix GETCONNECTOR regression
Date: Tue, 20 Jun 2017 12:32:33 +0300	[thread overview]
Message-ID: <87d19zc8cu.fsf@intel.com> (raw)
In-Reply-To: <20170620091605.3749-1-daniel.vetter@ffwll.ch>

On Tue, 20 Jun 2017, Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
> In
>
> commit 91eefc05f0ac71902906b2058360e61bd25137fe
> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> Date:   Wed Dec 14 00:08:10 2016 +0100
>
>     drm: Tighten locking in drm_mode_getconnector
>
> I reordered the logic a bit in that IOCTL, but that broke userspace
> since it'll get the new mode list, but not the new property values.
> Fix that again.
>
> Fixes: 91eefc05f0ac ("drm: Tighten locking in drm_mode_getconnector")
> Cc: Sean Paul <seanpaul@chromium.org>
> Cc: Daniel Vetter <daniel.vetter@intel.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Cc: David Airlie <airlied@linux.ie>
> Cc: dri-devel@lists.freedesktop.org
> Reported-by: "H.J. Lu" <hjl.tools@gmail.com>
> Cc: "H.J. Lu" <hjl.tools@gmail.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>

Possibly

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100576

> ---
>  drivers/gpu/drm/drm_connector.c | 33 ++++++++++++++++++---------------
>  1 file changed, 18 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
> index 5cd61aff7857..e0fd8168a178 100644
> --- a/drivers/gpu/drm/drm_connector.c
> +++ b/drivers/gpu/drm/drm_connector.c
> @@ -1293,21 +1293,6 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
>  	if (!connector)
>  		return -ENOENT;
>  
> -	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
> -	encoder = drm_connector_get_encoder(connector);
> -	if (encoder)
> -		out_resp->encoder_id = encoder->base.id;
> -	else
> -		out_resp->encoder_id = 0;
> -
> -	ret = drm_mode_object_get_properties(&connector->base, file_priv->atomic,
> -			(uint32_t __user *)(unsigned long)(out_resp->props_ptr),
> -			(uint64_t __user *)(unsigned long)(out_resp->prop_values_ptr),
> -			&out_resp->count_props);
> -	drm_modeset_unlock(&dev->mode_config.connection_mutex);
> -	if (ret)
> -		goto out_unref;
> -
>  	for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++)
>  		if (connector->encoder_ids[i] != 0)
>  			encoders_count++;
> @@ -1372,6 +1357,24 @@ int drm_mode_getconnector(struct drm_device *dev, void *data,
>  	out_resp->count_modes = mode_count;
>  out:
>  	mutex_unlock(&dev->mode_config.mutex);
> +
> +	drm_modeset_lock(&dev->mode_config.connection_mutex, NULL);
> +	encoder = drm_connector_get_encoder(connector);
> +	if (encoder)
> +		out_resp->encoder_id = encoder->base.id;
> +	else
> +		out_resp->encoder_id = 0;
> +
> +	/* Only grab properties after probing, to make sure EDID and other
> +	 * properties reflect the latest status. */
> +	ret = drm_mode_object_get_properties(&connector->base, file_priv->atomic,
> +			(uint32_t __user *)(unsigned long)(out_resp->props_ptr),
> +			(uint64_t __user *)(unsigned long)(out_resp->prop_values_ptr),
> +			&out_resp->count_props);
> +	drm_modeset_unlock(&dev->mode_config.connection_mutex);
> +	if (ret)
> +		goto out_unref;
> +
>  out_unref:
>  	drm_connector_put(connector);

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2017-06-20  9:32 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-20  9:16 [PATCH] drm: Fix GETCONNECTOR regression Daniel Vetter
2017-06-20  9:32 ` Jani Nikula [this message]
2017-06-20 16:24   ` H.J. Lu
2017-06-20  9:35 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-06-20 18:50 ` [PATCH] " Daniel Vetter
2017-06-20 19:32 ` [Intel-gfx] " Pandiyan, Dhinakaran
2017-06-20 20:29   ` Daniel Vetter
  -- strict thread matches above, loose matches on Subject: below --
2017-06-20 20:28 Daniel Vetter
2017-06-20 20:28 ` Daniel Vetter
2017-06-20 21:40 ` Sean Paul
2017-06-21  7:51   ` Daniel Vetter
2017-06-21  7:51     ` Daniel Vetter

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=87d19zc8cu.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=airlied@linux.ie \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hjl.tools@gmail.com \
    --cc=intel-gfx@lists.freedesktop.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.