On Mon, Dec 02, 2013 at 06:32:51PM +0200, Mika Kuoppala wrote: > 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. I guess a quick comment to explain that in the code would help. Can you please update the patch? -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx