Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/tegra: Don't take dev->struct_mutex in mmap offset ioctl

Since David Herrmann's mmap vma manager rework we don't need to grab
dev->struct_mutex any more to prevent races when looking up the mmap
offset. Drop it and instead don't forget to use the unref_unlocked
variant (since the drm core still cares).

v2: Finally get rid of the copypasta from another commit in this
commit message. And convert to _unlocked like we need to (Patrik).

Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Acked-by: Thierry Reding <thierry.reding@gmail.com>
Reviewed-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>

authored by

Daniel Vetter and committed by
Thierry Reding
d849c82f 11533304

+1 -6
+1 -6
drivers/gpu/drm/tegra/gem.c
··· 408 408 struct drm_gem_object *gem; 409 409 struct tegra_bo *bo; 410 410 411 - mutex_lock(&drm->struct_mutex); 412 - 413 411 gem = drm_gem_object_lookup(drm, file, handle); 414 412 if (!gem) { 415 413 dev_err(drm->dev, "failed to lookup GEM object\n"); 416 - mutex_unlock(&drm->struct_mutex); 417 414 return -EINVAL; 418 415 } 419 416 ··· 418 421 419 422 *offset = drm_vma_node_offset_addr(&bo->gem.vma_node); 420 423 421 - drm_gem_object_unreference(gem); 422 - 423 - mutex_unlock(&drm->struct_mutex); 424 + drm_gem_object_unreference_unlocked(gem); 424 425 425 426 return 0; 426 427 }