Message ID | 1446553215-18273-1-git-send-email-fbarrat@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Acked-by: Ian Munsie <imunsie@au1.ibm.com>
On 03/11/15 23:20, Frederic Barrat wrote: > When the cxl driver creates a context, it stores the pid of the > calling task, and mistakenly increments the reference count of the > struct pid twice, once through get_task_pid(), once through > get_pid(). The reference count is only decremented once on detach. As > a result, a struct pid is leaked and it reduces the number of > processes that can run simultaneously by one. > The fix is to simply remove the call to get_pid(). > > There is a separate patch for the user API, since it goes to > different kernel versions. > > Signed-off-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com> > Cc: <stable@vger.kernel.org> # 4.3+ Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
diff --git a/drivers/misc/cxl/api.c b/drivers/misc/cxl/api.c index 103baf0..94b6627 100644 --- a/drivers/misc/cxl/api.c +++ b/drivers/misc/cxl/api.c @@ -176,7 +176,6 @@ int cxl_start_context(struct cxl_context *ctx, u64 wed, if (task) { ctx->pid = get_task_pid(task, PIDTYPE_PID); - get_pid(ctx->pid); kernel = false; }
When the cxl driver creates a context, it stores the pid of the calling task, and mistakenly increments the reference count of the struct pid twice, once through get_task_pid(), once through get_pid(). The reference count is only decremented once on detach. As a result, a struct pid is leaked and it reduces the number of processes that can run simultaneously by one. The fix is to simply remove the call to get_pid(). There is a separate patch for the user API, since it goes to different kernel versions. Signed-off-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com> Cc: <stable@vger.kernel.org> # 4.3+ --- drivers/misc/cxl/api.c | 1 - 1 file changed, 1 deletion(-)