diff options
author | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2016-11-01 14:27:38 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2016-11-01 14:27:38 -0300 |
commit | 1eae9639aac0f8de4d284f567ec722a822b52513 (patch) | |
tree | 34e45a5c5e6a1033a444bea952ba9199e57f3a19 /drivers/misc/cxl/api.c | |
parent | 037d32aa8f748e39844d2a5b607fb063b4583843 (diff) |
Linux-libre 4.8.6-gnupck-4.8.6-gnu
Diffstat (limited to 'drivers/misc/cxl/api.c')
-rw-r--r-- | drivers/misc/cxl/api.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/misc/cxl/api.c b/drivers/misc/cxl/api.c index f3d34b941..af23d7dfe 100644 --- a/drivers/misc/cxl/api.c +++ b/drivers/misc/cxl/api.c @@ -229,6 +229,14 @@ int cxl_start_context(struct cxl_context *ctx, u64 wed, if (ctx->status == STARTED) goto out; /* already started */ + /* + * Increment the mapped context count for adapter. This also checks + * if adapter_context_lock is taken. + */ + rc = cxl_adapter_context_get(ctx->afu->adapter); + if (rc) + goto out; + if (task) { ctx->pid = get_task_pid(task, PIDTYPE_PID); ctx->glpid = get_task_pid(task->group_leader, PIDTYPE_PID); @@ -240,6 +248,7 @@ int cxl_start_context(struct cxl_context *ctx, u64 wed, if ((rc = cxl_ops->attach_process(ctx, kernel, wed, 0))) { put_pid(ctx->pid); + cxl_adapter_context_put(ctx->afu->adapter); cxl_ctx_put(); goto out; } |