diff mbox

[3/7] CXL: Fix leaking interrupts if attach process fails

Message ID 1418026681-14787-3-git-send-email-imunsie@au.ibm.com (mailing list archive)
State Accepted
Commit 456295e284beb7b61a55ead9500d30f94ab06d52
Delegated to: Michael Ellerman
Headers show

Commit Message

Ian Munsie Dec. 8, 2014, 8:17 a.m. UTC
From: Ian Munsie <imunsie@au1.ibm.com>

In this particular error path we have already allocated the AFU
interrupts, but have not yet set the status to STARTED. The detach
context code will only attempt to release the interrupts if the context
is in state STARTED, so in this case the interrupts would remain
allocated.

This patch releases the AFU interrupts immediately if the attach call
fails to prevent them leaking.

Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
---
 drivers/misc/cxl/file.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Ian Munsie Dec. 9, 2014, 5:34 a.m. UTC | #1
This one would be nice to go to stable, but I'm not sure if it's
critical enough to justify it since it only reduces the number of
available interrupts (and therefore, contexts) that can be used by the
card (so, maybe you can only run 507 contexts simultaneously instead of
509)...

Cheers,
-Ian
diff mbox

Patch

diff --git a/drivers/misc/cxl/file.c b/drivers/misc/cxl/file.c
index 378b099..2e067a5 100644
--- a/drivers/misc/cxl/file.c
+++ b/drivers/misc/cxl/file.c
@@ -181,8 +181,10 @@  static long afu_ioctl_start_work(struct cxl_context *ctx,
 	ctx->pid = get_pid(get_task_pid(current, PIDTYPE_PID));
 
 	if ((rc = cxl_attach_process(ctx, false, work.work_element_descriptor,
-				     amr)))
+				     amr))) {
+		afu_release_irqs(ctx);
 		goto out;
+	}
 
 	ctx->status = STARTED;
 	rc = 0;