drm/vmwgfx: Fix a destoy-while-held mutex problem.
authorThomas Hellstrom <thellstrom@vmware.com>
Wed, 21 Mar 2018 09:18:38 +0000 (10:18 +0100)
committerThomas Hellstrom <thellstrom@vmware.com>
Wed, 21 Mar 2018 09:52:01 +0000 (10:52 +0100)
commit73a88250b70954a8f27c2444e1c2411bba3c29d9
treed4347a5a40c693af235e082bac3f7affeeb8b593
parent140bcaa23a1c37b694910424075a15e009120dbe
drm/vmwgfx: Fix a destoy-while-held mutex problem.

When validating legacy surfaces, the backup bo might be destroyed at
surface validate time. However, the kms resource validation code may have
the bo reserved, so we will destroy a locked mutex. While there shouldn't
be any other users of that mutex when it is destroyed, it causes a lock
leak and thus throws a lockdep error.

Fix this by having the kms resource validation code hold a reference to
the bo while we have it reserved. We do this by introducing a validation
context which might come in handy when the kms code is extended to validate
multiple resources or buffers.

Cc: <stable@vger.kernel.org>
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Sinclair Yeh <syeh@vmware.com>
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h
drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c