mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-11 01:46:14 +00:00
tests/gem_fd_exhaustion: Make it work
- We need to drop root to actually hit the limits. This requires us to fork the actual test since otherwise the exit handlers (which require root) fail the entire test. - Don't assert that the gem create ioctl succeeds, it won't on the final run of the loop. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
7d2ba073ad
commit
5b91475130
@ -57,27 +57,35 @@ igt_simple_main
|
||||
|
||||
igt_assert(open("/dev/null", O_RDONLY) >= 0);
|
||||
|
||||
for (i = 0; ; i++) {
|
||||
int tmp_fd = open("/dev/null", O_RDONLY);
|
||||
uint32_t handle;
|
||||
igt_fork(n, 1) {
|
||||
igt_drop_root();
|
||||
|
||||
if (tmp_fd >= 0 && i < FD_ARR_SZ)
|
||||
fd_arr[i] = tmp_fd;
|
||||
for (i = 0; ; i++) {
|
||||
int tmp_fd = open("/dev/null", O_RDONLY);
|
||||
uint32_t handle;
|
||||
|
||||
handle = gem_create(fd, 4096);
|
||||
if (handle)
|
||||
gem_close(fd, handle);
|
||||
if (tmp_fd >= 0 && i < FD_ARR_SZ)
|
||||
fd_arr[i] = tmp_fd;
|
||||
|
||||
handle = __gem_create(fd, 4096);
|
||||
if (handle)
|
||||
gem_close(fd, handle);
|
||||
|
||||
|
||||
if (!handle || tmp_fd < 0) {
|
||||
printf("fd exhaustion after %i rounds.\n", i);
|
||||
break;
|
||||
if (tmp_fd < 0) {
|
||||
/* Ensure we actually hit the failure path ... */
|
||||
igt_assert(handle == 0);
|
||||
printf("fd exhaustion after %i rounds.\n", i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* The child will free all the fds when exiting, so no need to
|
||||
* clean up to mess to ensure that the parent can at least run
|
||||
* the exit handlers. */
|
||||
}
|
||||
|
||||
/* free a few fd so that the exit handlers can at least run. */
|
||||
for (i = 0; i < FD_ARR_SZ; i++)
|
||||
close(fd_arr[i]);
|
||||
igt_waitchildren();
|
||||
|
||||
close(fd);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user