linux/drivers/misc/cxl
Vaibhav Jain 7b8ad495d5 cxl: Fix DSI misses when the context owning task exits
Presently when a user-space process issues CXL_IOCTL_START_WORK ioctl we
store the pid of the current task_struct and use it to get pointer to
the mm_struct of the process, while processing page or segment faults
from the capi card. However this causes issues when the thread that had
originally issued the start-work ioctl exits in which case the stored
pid is no more valid and the cxl driver is unable to handle faults as
the mm_struct corresponding to process is no more accessible.

This patch fixes this issue by using the mm_struct of the next alive
task in the thread group. This is done by iterating over all the tasks
in the thread group starting from thread group leader and calling
get_task_mm on each one of them. When a valid mm_struct is obtained the
pid of the associated task is stored in the context replacing the
exiting one for handling future faults.

The patch introduces a new function named get_mem_context that checks if
the current task pointed to by ctx->pid is dead? If yes it performs the
steps described above. Also a new variable cxl_context.glpid is
introduced which stores the pid of the thread group leader associated
with the context owning task.

Reported-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
Reported-by: Frank Haverkamp <HAVERKAM@de.ibm.com>
Suggested-by: Ian Munsie <imunsie@au1.ibm.com>
Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
Acked-by: Ian Munsie <imunsie@au1.ibm.com>
Reviewed-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
Reviewed-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2016-01-05 16:28:25 +11:00
..
api.c cxl: Fix DSI misses when the context owning task exits 2016-01-05 16:28:25 +11:00
base.c cxl: Move include file cxl.h -> cxl-base.h 2015-06-03 13:27:19 +10:00
context.c cxl: Fix DSI misses when the context owning task exits 2016-01-05 16:28:25 +11:00
cxl.h cxl: Fix DSI misses when the context owning task exits 2016-01-05 16:28:25 +11:00
debugfs.c cxl: sparse: Silence iomem warning in debugfs file creation 2015-08-12 14:49:29 +10:00
fault.c cxl: Fix DSI misses when the context owning task exits 2016-01-05 16:28:25 +11:00
file.c cxl: Fix DSI misses when the context owning task exits 2016-01-05 16:28:25 +11:00
irq.c cxl: fix leak of ctx->irq_bitmap when releasing context via kernel API 2015-10-01 11:49:32 +10:00
Kconfig cxl: Add CONFIG_CXL_EEH symbol 2015-08-17 13:56:29 +10:00
main.c cxl: Destroy cxl_adapter_idr on module_exit 2015-07-16 14:14:55 +10:00
Makefile cxl: Fix build failure due to -Wunused-variable behaviour change 2015-09-15 19:33:51 +10:00
native.c cxl: Fix number of allocated pages in SPA 2015-10-07 16:44:46 +11:00
pci.c cxl: Workaround malformed pcie packets on some cards 2015-10-06 20:59:46 +11:00
sysfs.c cxl: Fix lockdep warning while creating afu_err_buff attribute 2015-09-23 20:57:13 +10:00
trace.c cxl: Add tracepoints 2015-01-22 17:31:51 +11:00
trace.h cxl: use more common format specifier 2015-07-13 10:10:54 +10:00
vphb.c cxl: use correct operator when writing pcie config space values 2015-11-24 14:21:27 +11:00