Message ID | 1459330852-27668-8-git-send-email-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 30 March 2016 at 10:40, Daniel Vetter <daniel.vetter@ffwll.ch> wrote: > The sg table isn't refcounted, there's no corresponding locking for > unmapping and drm_map_sg is ok with being called concurrently. > > So drop the locking since it doesn't protect anything. > > Cc: Inki Dae <inki.dae@samsung.com> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> > --- > drivers/gpu/drm/exynos/exynos_drm_gem.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c > index 3b7209335df0..60b9975bb0b1 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c > @@ -388,16 +388,12 @@ int exynos_gem_map_sgt_with_dma(struct drm_device *drm_dev, > { > int nents; > > - mutex_lock(&drm_dev->struct_mutex); > - > nents = dma_map_sg(to_dma_dev(drm_dev), sgt->sgl, sgt->nents, dir); > if (!nents) { > DRM_ERROR("failed to map sgl with dma.\n"); > - mutex_unlock(&drm_dev->struct_mutex); > return nents; > } > > - mutex_unlock(&drm_dev->struct_mutex); > return 0; Either my coffee hasn't kicked in or we have a preexisting bug. Namely - we are returning 0, regardless if we hit the above error ? If that's intentional shouldn't there be a comment explaining why ? -Emil
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c index 3b7209335df0..60b9975bb0b1 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c @@ -388,16 +388,12 @@ int exynos_gem_map_sgt_with_dma(struct drm_device *drm_dev, { int nents; - mutex_lock(&drm_dev->struct_mutex); - nents = dma_map_sg(to_dma_dev(drm_dev), sgt->sgl, sgt->nents, dir); if (!nents) { DRM_ERROR("failed to map sgl with dma.\n"); - mutex_unlock(&drm_dev->struct_mutex); return nents; } - mutex_unlock(&drm_dev->struct_mutex); return 0; }
The sg table isn't refcounted, there's no corresponding locking for unmapping and drm_map_sg is ok with being called concurrently. So drop the locking since it doesn't protect anything. Cc: Inki Dae <inki.dae@samsung.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> --- drivers/gpu/drm/exynos/exynos_drm_gem.c | 4 ---- 1 file changed, 4 deletions(-)