Message ID | 1439940438-3585-1-git-send-email-andrew.donnellan@au1.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Acked-by: Ian Munsie <imunsie@au1.ibm.com>
On Tue, 2015-18-08 at 23:27:18 UTC, Andrew Donnellan wrote: > If we open a context but do not start it (either because we do not attempt > to start it, or because it fails to start for some reason), we are left > with a context in state OPENED. Previously, cxl_release_context() only > allowed releasing contexts in state CLOSED, so attempting to release an > OPENED context would fail. > > In particular, this bug causes available contexts to run out after some EEH > failures, where drivers attempt to release contexts that have failed to > start. > > Allow releasing contexts in any state with a value lower than STARTED, i.e. > OPENED or CLOSED (we can't release a STARTED context as it's currently > using the hardware, and we assume that contexts in any new states which may > be added in future with a value higher than STARTED are also unsafe to > release). > > Cc: stable@vger.kernel.org > Fixes: 6f7f0b3df6d4 ("cxl: Add AFU virtual PHB and kernel API") > Signed-off-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com> > Signed-off-by: Daniel Axtens <dja@axtens.net> > Acked-by: Ian Munsie <imunsie@au1.ibm.com> Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/7c26b9cf5347c2427215 cheers
diff --git a/drivers/misc/cxl/api.c b/drivers/misc/cxl/api.c index 6a768a9..f49e3e5 100644 --- a/drivers/misc/cxl/api.c +++ b/drivers/misc/cxl/api.c @@ -59,7 +59,7 @@ EXPORT_SYMBOL_GPL(cxl_get_phys_dev); int cxl_release_context(struct cxl_context *ctx) { - if (ctx->status != CLOSED) + if (ctx->status >= STARTED) return -EBUSY; put_device(&ctx->afu->dev);