[bug report] drm/xe: error pointer dereferences in test/xe_migrate.c
Dan Carpenter
dan.carpenter at linaro.org
Fri Jan 5 12:20:47 UTC 2024
Hello Matthew Brost,
The patch dd08ebf6c352: "drm/xe: Introduce a new DRM driver for Intel
GPUs" from Mar 30, 2023 (linux-next), leads to the following Smatch
static checker warning:
drivers/gpu/drm/xe/tests/xe_migrate.c:147 test_copy() warn: passing error pointer 'fence' to dma_fence_put()
drivers/gpu/drm/xe/tests/xe_migrate.c:165 test_copy() warn: passing error pointer 'fence' to dma_fence_put()
drivers/gpu/drm/xe/tests/xe_migrate.c:182 test_copy() warn: passing error pointer 'fence' to dma_fence_put()
drivers/gpu/drm/xe/tests/xe_migrate.c
135
136 xe_map_memset(xe, &remote->vmap, 0, 0xd0, remote->size);
137 fence = xe_migrate_clear(m, remote, remote->ttm.resource);
Btw, xe_migrate_clear() can return both error pointers and NULL but
there is no documentation what the NULL means and returning NULL looks
like a bug.
138 if (!sanity_fence_failed(xe, fence, big ? "Clearing remote big bo" :
139 "Clearing remote small bo", test)) {
140 retval = xe_map_rd(xe, &remote->vmap, 0, u64);
141 check(retval, expected, "remote first offset should be cleared",
142 test);
143 retval = xe_map_rd(xe, &remote->vmap, remote->size - 8, u64);
144 check(retval, expected, "remote last offset should be cleared",
145 test);
146 }
--> 147 dma_fence_put(fence);
^^^^^
This will crash with an error pointer dereference.
148
149 /* Try to copy 0xc0 from remote to vram with 2MB or 64KiB/4KiB pages */
150 xe_map_memset(xe, &remote->vmap, 0, 0xc0, remote->size);
151 xe_map_memset(xe, &bo->vmap, 0, 0xd0, bo->size);
regards,
dan carpenter
More information about the Intel-xe
mailing list