__gem_create() doesn't touch the outparam *handle on failure, so we can no longer assert that it zero. This is reasonable to remove as it is just testing the library itself and not the kernel, so no loss in coverage. We already had to remove the false assertion that gem_create() must fail following fd exhaustion (as we can not prevent the kernel from freeing VFS fdspace in between calls). The last remaining change is that we do no need to rely on an external path for open() as dup() will do the job of exhausting the fdtable. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103365 Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- tests/gem_fd_exhaustion.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/tests/gem_fd_exhaustion.c b/tests/gem_fd_exhaustion.c index 250fe850..0969f9c6 100644 --- a/tests/gem_fd_exhaustion.c +++ b/tests/gem_fd_exhaustion.c @@ -33,11 +33,6 @@ #include <fcntl.h> #include <limits.h> - - -#define FD_ARR_SZ 100 -int fd_arr[FD_ARR_SZ]; - static bool allow_unlimited_files(void) { struct rlimit rlim; @@ -60,31 +55,23 @@ static bool allow_unlimited_files(void) igt_simple_main { - int fd, i; + int fd; igt_require(allow_unlimited_files()); fd = drm_open_driver(DRIVER_INTEL); - igt_assert(open("/dev/null", O_RDONLY) >= 0); - igt_fork(n, 1) { igt_drop_root(); - for (i = 0; ; i++) { - int tmp_fd = open("/dev/null", O_RDONLY); + for (int i = 0; ; i++) { + int leak = dup(fd); uint32_t handle; - if (tmp_fd >= 0 && i < FD_ARR_SZ) - fd_arr[i] = tmp_fd; - if (__gem_create(fd, 4096, &handle) == 0) gem_close(fd, handle); - - if (tmp_fd < 0) { - /* Ensure we actually hit the failure path ... */ - igt_assert(handle == 0); + if (leak < 0) { igt_info("fd exhaustion after %i rounds.\n", i); break; } -- 2.15.0.rc1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx