drm/mode: reduce lock hold in addfb2
authorDave Airlie <airlied@redhat.com>
Fri, 15 Apr 2016 05:10:39 +0000 (15:10 +1000)
committerDave Airlie <airlied@redhat.com>
Fri, 22 Apr 2016 00:42:25 +0000 (10:42 +1000)
No need to hold the lock while assigning the variable.

Daniel wrote:
"Not sure why exactly I put that under the lock, but the only thing that
can race here is rmfb while addfb2 is still doing it's thing, with a
correctly guess (easy to do since they're fully deterministic) fb_id."

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/drm_crtc.c

index b088840582cc376796bd745f5b9003cc8bb02ef0..bbf7ce4ead99f31cf7d9814907c313e44be7078a 100644 (file)
@@ -3445,11 +3445,11 @@ int drm_mode_addfb2(struct drm_device *dev,
        if (IS_ERR(fb))
                return PTR_ERR(fb);
 
-       /* Transfer ownership to the filp for reaping on close */
-
        DRM_DEBUG_KMS("[FB:%d]\n", fb->base.id);
-       mutex_lock(&file_priv->fbs_lock);
        r->fb_id = fb->base.id;
+
+       /* Transfer ownership to the filp for reaping on close */
+       mutex_lock(&file_priv->fbs_lock);
        list_add(&fb->filp_head, &file_priv->fbs);
        mutex_unlock(&file_priv->fbs_lock);