diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2016-08-05 09:37:00 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2016-08-05 09:59:00 +0100 |
commit | b9e2db934b262fe541e4800854f320bce59b34de (patch) | |
tree | fd16f5534912e41c242e80e21c29f6db4e22e077 /tests/gem_madvise.c | |
parent | db636a7a392aa657de89bdc7ea9a15f56596751c (diff) |
igt/gem_madvise: Quick fixup of expectation around mmap()
We don't do any santiy checking at the point of crating the mmap(), that
is deferred until the pointer is actually dereferenced (as the state of
the object may well change between mmap and pagefault).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'tests/gem_madvise.c')
-rw-r--r-- | tests/gem_madvise.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/tests/gem_madvise.c b/tests/gem_madvise.c index 36408fe3..24d58dd5 100644 --- a/tests/gem_madvise.c +++ b/tests/gem_madvise.c @@ -63,10 +63,23 @@ dontneed_before_mmap(void) handle = gem_create(fd, OBJECT_SIZE); gem_madvise(fd, handle, I915_MADV_DONTNEED); - ptr = __gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE); - igt_assert(ptr == NULL); - igt_assert(errno == EFAULT); + ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE); close(fd); + + signal(SIGSEGV, sigtrap); + signal(SIGBUS, sigtrap); + switch (setjmp(jmp)) { + case SIGBUS: + break; + case 0: + *ptr = 0; + default: + igt_assert(!"reached"); + break; + } + munmap(ptr, OBJECT_SIZE); + signal(SIGBUS, SIG_DFL); + signal(SIGSEGV, SIG_DFL); } static void @@ -77,7 +90,7 @@ dontneed_after_mmap(void) char *ptr; handle = gem_create(fd, OBJECT_SIZE); - ptr = __gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE); + ptr = gem_mmap__gtt(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE); igt_assert(ptr); gem_madvise(fd, handle, I915_MADV_DONTNEED); close(fd); |