xen/gntdev: Do not destroy context while dma-bufs are in use
authorOleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Thu, 14 Feb 2019 14:23:20 +0000 (16:23 +0200)
committerJuergen Gross <jgross@suse.com>
Mon, 18 Feb 2019 05:50:03 +0000 (06:50 +0100)
commitfa13e665e02874c0a5f4d06d6967ae34a6cb3d6a
treeebecfe859585e02ea8a0d14b605628411ccf893f
parent7681f31ec9cdacab4fd10570be924f2cef6669ba
xen/gntdev: Do not destroy context while dma-bufs are in use

If there are exported DMA buffers which are still in use and
grant device is closed by either normal user-space close or by
a signal this leads to the grant device context to be destroyed,
thus making it not possible to correctly destroy those exported
buffers when they are returned back to gntdev and makes the module
crash:

[  339.617540] [<ffff00000854c0d8>] dmabuf_exp_ops_release+0x40/0xa8
[  339.617560] [<ffff00000867a6e8>] dma_buf_release+0x60/0x190
[  339.617577] [<ffff0000082211f0>] __fput+0x88/0x1d0
[  339.617589] [<ffff000008221394>] ____fput+0xc/0x18
[  339.617607] [<ffff0000080ed4e4>] task_work_run+0x9c/0xc0
[  339.617622] [<ffff000008089714>] do_notify_resume+0xfc/0x108

Fix this by referencing gntdev on each DMA buffer export and
unreferencing on buffer release.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Reviewed-by: Boris Ostrovsky@oracle.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
drivers/xen/gntdev-dmabuf.c
drivers/xen/gntdev-dmabuf.h
drivers/xen/gntdev.c