panfrost: Reserve, but do not upload, shader padding
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 23 Jul 2019 17:14:46 +0000 (10:14 -0700)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Thu, 25 Jul 2019 13:34:20 +0000 (06:34 -0700)
Fixes invalid read errors reported by valgrind.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/gallium/drivers/panfrost/pan_allocate.c

index 9e9565d60067ae98ad94838572cb6f4e5a208a88..f549c864c70b7e170f1863e6b5819bc6838f5f3f 100644 (file)
@@ -151,10 +151,10 @@ panfrost_upload_transient(struct panfrost_context *ctx, const void *data, size_t
 mali_ptr
 panfrost_upload(struct panfrost_memory *mem, const void *data, size_t sz)
 {
-        sz = ALIGN_POT(sz, ALIGNMENT);
+        size_t aligned_sz = ALIGN_POT(sz, ALIGNMENT);
 
         /* Bounds check */
-        if ((mem->stack_bottom + sz) >= mem->bo->size) {
+        if ((mem->stack_bottom + aligned_sz) >= mem->bo->size) {
                 printf("Out of memory, tried to upload %zd but only %zd available\n",
                        sz, mem->bo->size - mem->stack_bottom);
                 assert(0);
@@ -163,6 +163,6 @@ panfrost_upload(struct panfrost_memory *mem, const void *data, size_t sz)
         memcpy((uint8_t *) mem->bo->cpu + mem->stack_bottom, data, sz);
         mali_ptr gpu = mem->bo->gpu + mem->stack_bottom;
 
-        mem->stack_bottom += sz;
+        mem->stack_bottom += aligned_sz;
         return gpu;
 }