gallium/winsys/kms: Fix possible leak in map/unmap.
authorLepton Wu <lepton@chromium.org>
Mon, 19 Mar 2018 22:01:30 +0000 (15:01 -0700)
committerEmil Velikov <emil.l.velikov@gmail.com>
Thu, 22 Mar 2018 18:10:42 +0000 (18:10 +0000)
commitd891f28df9a4efeda47ee307e7b13147597e8863
tree207737624acc4488a11daf094cecf972c162b768
parent4db269f30c2b8859fcf111ee2da6979dbb6794e8
gallium/winsys/kms: Fix possible leak in map/unmap.

If user calls map twice for kms_sw_displaytarget, the first mapped
buffer could get leaked. Instead of calling mmap every time, just
reuse previous mapping. Since user could map same displaytarget with
different flags, we have to keep two different pointers, one for rw
mapping and one for ro mapping. Also introduce reference count for
mapped buffer so we can unmap them at right time.

v2:
 - avoid duplicated mapping and leaked mapping (Tomasz)
v3:
 - split from larger patch (Emil)
v4:
 - remove munmap from dt_destory (Emil)
v5:
 - introduce reference count for mapping (Tomasz)
 - add back munmap in dt_destory
v6:
 - remove change-id in commit message (Tomasz)
v7:
 - remove munmap from dt_destory again (Emil)
 - add revision history in commit message (Emil)

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Tomasz Figa <tfiga@chromium.org>
Signed-off-by: Lepton Wu <lepton@chromium.org>
src/gallium/winsys/sw/kms-dri/kms_dri_sw_winsys.c