linux/drivers/gpu/drm/vc4
Boris Brezillon 5bfd40139d drm/vc4: Fix false positive WARN() backtrace on refcount_inc() usage
With CONFIG_REFCOUNT_FULL enabled, refcount_inc() complains when it's
passed a refcount object that has its counter set to 0. In this driver,
this is a valid use case since we want to increment ->usecnt only when
the BO object starts to be used by real HW components and this is
definitely not the case when the BO is created.

Fix the problem by using refcount_inc_not_zero() instead of
refcount_inc() and fallback to refcount_set(1) when
refcount_inc_not_zero() returns false. Note that this 2-steps operation
is not racy here because the whole section is protected by a mutex
which guarantees that the counter does not change between the
refcount_inc_not_zero() and refcount_set() calls.

Fixes: b9f19259b8 ("drm/vc4: Add the DRM_IOCTL_VC4_GEM_MADVISE ioctl")
Reported-by: Stefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Acked-by: Eric Anholt <eric@anholt.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20171122203928.28135-1-boris.brezillon@free-electrons.com
2017-12-07 10:09:43 +01:00
..
Kconfig drm/vc4: add HDMI CEC support 2017-07-26 12:15:12 -07:00
Makefile main drm pull request for v4.15 2017-11-15 20:42:10 -08:00
vc4_bo.c drm/vc4: Fix false positive WARN() backtrace on refcount_inc() usage 2017-12-07 10:09:43 +01:00
vc4_crtc.c drm/vc4: switch to drm_*{get,put} helpers 2017-08-08 13:20:11 -07:00
vc4_debugfs.c drm/vc4: Add DSI driver 2017-02-01 12:51:23 -08:00
vc4_dpi.c drm/vc4: remove bridge from driver internal structure 2017-10-10 11:32:54 +02:00
vc4_drv.c drm/vc4: Add the DRM_IOCTL_VC4_GEM_MADVISE ioctl 2017-10-19 10:34:49 -07:00
vc4_drv.h drm/vc4: Add the DRM_IOCTL_VC4_GEM_MADVISE ioctl 2017-10-19 10:34:49 -07:00
vc4_dsi.c drm/vc4: Fix sleeps during the IRQ handler for DSI transactions. 2017-10-19 13:20:09 -07:00
vc4_fence.c drm/vc4: Expose dma-buf fences for V3D rendering. 2017-04-13 11:00:28 -07:00
vc4_gem.c drm/vc4: Convert timers to use timer_setup() 2017-11-21 15:46:44 -08:00
vc4_hdmi.c Merge tag 'drm-misc-fixes-2017-11-20' of git://anongit.freedesktop.org/drm/drm-misc into drm-next 2017-11-24 11:33:29 +10:00
vc4_hvs.c drm/vc4: fix include notation and remove -Iinclude/drm flag 2017-05-22 09:36:01 +02:00
vc4_irq.c drm/vc4: Account for interrupts in flight 2017-11-13 16:40:15 -08:00
vc4_kms.c drm/vc4: Use drm_gem_fb_create() 2017-08-16 21:35:57 +02:00
vc4_packet.h drm/vc4: Add support for drawing 3D frames. 2015-12-07 20:05:10 -08:00
vc4_plane.c drm/vc4: Add the DRM_IOCTL_VC4_GEM_MADVISE ioctl 2017-10-19 10:34:49 -07:00
vc4_qpu_defines.h drm/vc4: Fix definition of QPU_R_MS_REV_FLAGS 2016-07-15 15:19:52 -07:00
vc4_regs.h drm/vc4: add HDMI CEC support 2017-07-26 12:15:12 -07:00
vc4_render_cl.c drm/vc4: Add exec flags to allow forcing a specific X/Y tile walk order. 2017-08-08 13:26:44 -07:00
vc4_trace_points.c drm/vc4: Add support for drawing 3D frames. 2015-12-07 20:05:10 -08:00
vc4_trace.h drm/vc4: Use correct path to trace include 2017-09-05 11:11:20 +02:00
vc4_v3d.c drm/vc4: Add an ioctl for labeling GEM BOs for summary stats 2017-07-28 16:04:53 -07:00
vc4_validate_shaders.c drm/vc4: Demote user-accessible DRM_ERROR paths to DRM_DEBUG. 2017-08-08 13:20:11 -07:00
vc4_validate.c drm/vc4: Demote user-accessible DRM_ERROR paths to DRM_DEBUG. 2017-08-08 13:20:11 -07:00
vc4_vec.c drm: Nuke drm_atomic_helper_connector_dpms 2017-08-08 14:48:48 +02:00