A userptr doesn't have the obj->base.filp, but can be exported via dma-buf, so make sure it fails when mmaping. Signed-off-by: Tiago Vignatti <tiago.vignatti@xxxxxxxxx> --- In machine, export the handle to fd is actually returning error and falling before the actual test happens. Same issue happens in gem_userptr_blits's test_dmabuf(). This patch needs to be tested properly therefore. tests/prime_mmap.c | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/tests/prime_mmap.c b/tests/prime_mmap.c index ad91371..fd6d13b 100644 --- a/tests/prime_mmap.c +++ b/tests/prime_mmap.c @@ -299,12 +299,47 @@ static int prime_handle_to_fd_no_assert(uint32_t handle, int *fd_out) args.fd = -1; ret = drmIoctl(fd, DRM_IOCTL_PRIME_HANDLE_TO_FD, &args); - + if (ret) + ret = errno; *fd_out = args.fd; return ret; } +/* test for mmap(dma_buf_export(userptr)) */ +static void +test_userptr(void) +{ + int ret, dma_buf_fd; + void *ptr; + uint32_t handle; + + /* create userptr bo */ + ret = posix_memalign(&ptr, 4096, BO_SIZE); + igt_assert_eq(ret, 0); + + ret = gem_userptr(fd, (uint32_t *)ptr, BO_SIZE, 0, LOCAL_I915_USERPTR_UNSYNCHRONIZED, &handle); + igt_assert_eq(ret, 0); + + /* export userptr */ + ret = prime_handle_to_fd_no_assert(handle, &dma_buf_fd); + if (ret) { + igt_assert(ret == EINVAL || ret == ENODEV); + goto free_userptr; + } else { + igt_assert_eq(ret, 0); + igt_assert_lte(0, dma_buf_fd); + } + + /* a userptr doesn't have the obj->base.filp, but can be exported via + * dma-buf, so make sure it fails here */ + ptr = mmap(NULL, BO_SIZE, PROT_READ, MAP_SHARED, dma_buf_fd, 0); + igt_assert(ptr == MAP_FAILED && errno == ENODEV); +free_userptr: + gem_close(fd, handle); + close(dma_buf_fd); +} + static void test_errors(void) { @@ -413,6 +448,7 @@ igt_main { "test_forked_cpu_write", test_forked_cpu_write }, { "test_refcounting", test_refcounting }, { "test_dup", test_dup }, + { "test_userptr", test_userptr }, { "test_errors", test_errors }, { "test_aperture_limit", test_aperture_limit }, }; -- 2.1.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx