• Alyssa Rosenzweig's avatar
    panfrost: Fix leak of render node fd · 49d69528
    Alyssa Rosenzweig authored
    Transfer ownership of the render node fd to the panfrost_device (minor
    change to panvk), and then close the file descriptor for the render node
    bound to the panfrost_device when destroying the panfrost_device. Of all
    the users of panfrost_open_device, panvk is the only one that correctly
    closed the fd before. Accordingly, this fixes an fd leak in the Gallium
    driver (and performance counter utilities).
    This fix still applies to the Gallium driver when renderonly is in use--
    although renderonly closes its own fd, the fd is _duplicated_ in
    panfrost_drm_winsys.c, so renderonly and panfrost must _both_ close
    their respective fd to fix the leak.
    This fixes a crash when running dEQP-EGL for more than two hours.
    dEQP-EGL creates a new screen for every test case and then immediately
    destroys it. If destroying a screen leaks the fd, this causes the number
    of open file descriptors to increase monotonically until the process
    ends. This will eventually hit the system limit for number of open files
    and abort the process.
    This bug was identified while attempting to run the OpenGL ES
    conformance tests via cts-runner, and then confirmed with `lsof`. With
    the fix, the number of file descriptors reported by `lsof | wc -l` is
    now constant while running dEQP-EGL as expected.
    Signed-off-by: Alyssa Rosenzweig's avatarAlyssa Rosenzweig <alyssa@collabora.com>
    Cc: mesa-stable
panvk_device.c 79.2 KB