From: Rob Clark Date: Tue, 19 Nov 2019 17:43:22 +0000 (-0800) Subject: freedreno/drm: fix invalid-cmdstream-size with older kernels X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=63af27bc7681c302eaf4527253ca25cc32b400ce;p=mesa.git 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 Reviewed-by: Kristian H. Kristensen Tested-by: Marge Bot Part-of: --- 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);