Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > On Mon, Dec 02, 2013 at 04:47:46PM +0200, Mika Kuoppala wrote: >> Fork and create another filedesc to wait access to already >> hung GPU and then kill it. This triggers use after free of the >> request->batch_obj. >> >> Signed-off-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> >> --- >> +static int __test_open_any(void) >> +{ >> + char *name; >> + int ret, fd; >> + >> + ret = asprintf(&name, "/dev/dri/card%d", drm_get_card()); >> + if (ret == -1) >> + return -1; >> + >> + fd = open(name, O_RDWR); >> + free(name); >> + >> + return fd; >> +} >> + >> +static void test_close_pending_fork(void) >> +{ >> + int pid; >> + int fd, fd2, h; >> + >> + fd = drm_open_any(); >> + igt_assert(fd >= 0); > > [snip] > >> + close(fd); >> + >> + fd = drm_open_any(); > > This breaks the testsuite since drm_open_any() will now return the > closed fd. Hence your __test_open_any() above. > > However this does not justify kernel doing anything other than terminating > your process with extreme prejudice. I discussed this with Chris in IRC. There seems to be no problem as drm_open_any doesn't cache file descriptors. The reason i use __test_open_any is that I needed a way to bypass testsuites exit handling. --Mika _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx