Mesa (master): freedreno/drm: fix invalid-cmdstream-size with older kernels

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jan 28 00:27:07 UTC 2020


Module: Mesa
Branch: master
Commit: 63af27bc7681c302eaf4527253ca25cc32b400ce
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=63af27bc7681c302eaf4527253ca25cc32b400ce

Author: Rob Clark <robdclark at chromium.org>
Date:   Tue Nov 19 09:43:22 2019 -0800

freedreno/drm: fix invalid-cmdstream-size with older kernels

A cmdstream of size zero is invalid.  But this can appear in various
places where we emit a pointer to state.  This doesn't show up with
newer kernels (newer than v5.0) which use "softpin", but on earlier
kernels can result in:

  [drm:msm_ioctl_gem_submit [msm]] *ERROR* invalid cmdstream size: 0

Since the pointer value doesn't matter in these cases, the easy solution
is just to not emit a cmds table entry in this case.

Signed-off-by: Rob Clark <robdclark at chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2805>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2805>

---

 src/freedreno/drm/msm_ringbuffer.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/freedreno/drm/msm_ringbuffer.c b/src/freedreno/drm/msm_ringbuffer.c
index c4b352ee283..3ce36ad142a 100644
--- a/src/freedreno/drm/msm_ringbuffer.c
+++ b/src/freedreno/drm/msm_ringbuffer.c
@@ -612,6 +612,9 @@ msm_ringbuffer_emit_reloc_ring(struct fd_ringbuffer *ring,
 		.offset = msm_target->offset,
 	});
 
+	if (!size)
+		return 0;
+
 	if ((target->flags & _FD_RINGBUFFER_OBJECT) &&
 			!(ring->flags & _FD_RINGBUFFER_OBJECT)) {
 		struct msm_submit *msm_submit = to_msm_submit(msm_ring->u.submit);



More information about the mesa-commit mailing list