From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 4.14 006/170] gpu: ipu-v3: image-convert: Prevent race between run and unprepare Date: Mon, 28 Jan 2019 11:09:16 -0500 Message-ID: <20190128161200.55107-6-sashal@kernel.org> References: <20190128161200.55107-1-sashal@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 79F48891FA for ; Mon, 28 Jan 2019 16:12:16 +0000 (UTC) In-Reply-To: <20190128161200.55107-1-sashal@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sasha Levin , dri-devel@lists.freedesktop.org, Steve Longerbeam List-Id: dri-devel@lists.freedesktop.org RnJvbTogU3RldmUgTG9uZ2VyYmVhbSA8c2xvbmdlcmJlYW1AZ21haWwuY29tPgoKWyBVcHN0cmVh bSBjb21taXQgODE5YmVjMzVjOGM5NzA2MTg1NDk4YzkyMjJiZDI0NGUwNzgxYWQzNSBdCgpQcmV2 ZW50IHBvc3NpYmxlIHJhY2UgYnkgcGFyYWxsZWwgdGhyZWFkcyBiZXR3ZWVuIGlwdV9pbWFnZV9j b252ZXJ0X3J1bigpCmFuZCBpcHVfaW1hZ2VfY29udmVydF91bnByZXBhcmUoKS4gVGhpcyBpbnZv bHZlcyBzZXR0aW5nIGN0eC0+YWJvcnRpbmcKdG8gdHJ1ZSB1bmNvbmRpdGlvbmFsbHkgc28gdGhh dCBubyBuZXcgam9iIHJ1bnMgY2FuIGJlIHF1ZXVlZCBkdXJpbmcKdW5wcmVwYXJlLCBhbmQgaG9s ZGluZyB0aGUgY3R4LT5hYm9ydGluZyBmbGFnIHVudGlsIHRoZSBjb250ZXh0IGlzIGZyZWVkLgoK Tm90ZSB0aGF0IHRoZSAibm9ybWFsIiBpcHVfaW1hZ2VfY29udmVydF9hYm9ydCgpIGNhc2UgKGUu Zy4gbm90IGR1cmluZwpjb250ZXh0IHVucHJlcGFyZSkgc2hvdWxkIGNsZWFyIHRoZSBjdHgtPmFi b3J0aW5nIGZsYWcgYWZ0ZXIgYWJvcnRpbmcKYW55IGFjdGl2ZSBydW4gYW5kIGNsZWFyaW5nIHRo ZSBjb250ZXh0J3MgcGVuZGluZyBxdWV1ZS4gVGhpcyBpcyBiZWNhdXNlCml0IHNob3VsZCBiZSBw b3NzaWJsZSB0byBjb250aW51ZSB0byB1c2UgdGhlIGNvbnZlcnNpb24gY29udGV4dCBhbmQgcXVl dWUKbW9yZSBydW5zIGFmdGVyIGFuIGFib3J0LgoKU2lnbmVkLW9mZi1ieTogU3RldmUgTG9uZ2Vy YmVhbSA8c2xvbmdlcmJlYW1AZ21haWwuY29tPgpUZXN0ZWQtYnk6IFBoaWxpcHAgWmFiZWwgPHAu emFiZWxAcGVuZ3V0cm9uaXguZGU+ClNpZ25lZC1vZmYtYnk6IFBoaWxpcHAgWmFiZWwgPHAuemFi ZWxAcGVuZ3V0cm9uaXguZGU+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxzYXNoYWxAa2Vy bmVsLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9pcHUtdjMvaXB1LWltYWdlLWNvbnZlcnQuYyB8IDEw ICsrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1pbWFnZS1jb252ZXJ0LmMg Yi9kcml2ZXJzL2dwdS9pcHUtdjMvaXB1LWltYWdlLWNvbnZlcnQuYwppbmRleCA1MjRhNzE3YWIy OGUuLmE1ZTMzZDU4ZTAyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1pbWFn ZS1jb252ZXJ0LmMKKysrIGIvZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1pbWFnZS1jb252ZXJ0LmMK QEAgLTE1MTgsNyArMTUxOCw3IEBAIGludCBpcHVfaW1hZ2VfY29udmVydF9xdWV1ZShzdHJ1Y3Qg aXB1X2ltYWdlX2NvbnZlcnRfcnVuICpydW4pCiBFWFBPUlRfU1lNQk9MX0dQTChpcHVfaW1hZ2Vf Y29udmVydF9xdWV1ZSk7CiAKIC8qIEFib3J0IGFueSBhY3RpdmUgb3IgcGVuZGluZyBjb252ZXJz aW9ucyBmb3IgdGhpcyBjb250ZXh0ICovCi12b2lkIGlwdV9pbWFnZV9jb252ZXJ0X2Fib3J0KHN0 cnVjdCBpcHVfaW1hZ2VfY29udmVydF9jdHggKmN0eCkKK3N0YXRpYyB2b2lkIF9faXB1X2ltYWdl X2NvbnZlcnRfYWJvcnQoc3RydWN0IGlwdV9pbWFnZV9jb252ZXJ0X2N0eCAqY3R4KQogewogCXN0 cnVjdCBpcHVfaW1hZ2VfY29udmVydF9jaGFuICpjaGFuID0gY3R4LT5jaGFuOwogCXN0cnVjdCBp cHVfaW1hZ2VfY29udmVydF9wcml2ICpwcml2ID0gY2hhbi0+cHJpdjsKQEAgLTE1NDUsNyArMTU0 NSw3IEBAIHZvaWQgaXB1X2ltYWdlX2NvbnZlcnRfYWJvcnQoc3RydWN0IGlwdV9pbWFnZV9jb252 ZXJ0X2N0eCAqY3R4KQogCiAJbmVlZF9hYm9ydCA9IChydW5fY291bnQgfHwgYWN0aXZlX3J1bik7 CiAKLQljdHgtPmFib3J0aW5nID0gbmVlZF9hYm9ydDsKKwljdHgtPmFib3J0aW5nID0gdHJ1ZTsK IAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNoYW4tPmlycWxvY2ssIGZsYWdzKTsKIApAQCAt MTU2Niw3ICsxNTY2LDExIEBAIHZvaWQgaXB1X2ltYWdlX2NvbnZlcnRfYWJvcnQoc3RydWN0IGlw dV9pbWFnZV9jb252ZXJ0X2N0eCAqY3R4KQogCQlkZXZfd2Fybihwcml2LT5pcHUtPmRldiwgIiVz OiB0aW1lb3V0XG4iLCBfX2Z1bmNfXyk7CiAJCWZvcmNlX2Fib3J0KGN0eCk7CiAJfQorfQogCit2 b2lkIGlwdV9pbWFnZV9jb252ZXJ0X2Fib3J0KHN0cnVjdCBpcHVfaW1hZ2VfY29udmVydF9jdHgg KmN0eCkKK3sKKwlfX2lwdV9pbWFnZV9jb252ZXJ0X2Fib3J0KGN0eCk7CiAJY3R4LT5hYm9ydGlu ZyA9IGZhbHNlOwogfQogRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2ltYWdlX2NvbnZlcnRfYWJvcnQp OwpAQCAtMTU4MCw3ICsxNTg0LDcgQEAgdm9pZCBpcHVfaW1hZ2VfY29udmVydF91bnByZXBhcmUo c3RydWN0IGlwdV9pbWFnZV9jb252ZXJ0X2N0eCAqY3R4KQogCWJvb2wgcHV0X3JlczsKIAogCS8q IG1ha2Ugc3VyZSBubyBydW5zIGFyZSBoYW5naW5nIGFyb3VuZCAqLwotCWlwdV9pbWFnZV9jb252 ZXJ0X2Fib3J0KGN0eCk7CisJX19pcHVfaW1hZ2VfY29udmVydF9hYm9ydChjdHgpOwogCiAJZGV2 X2RiZyhwcml2LT5pcHUtPmRldiwgIiVzOiB0YXNrICV1OiByZW1vdmluZyBjdHggJXBcbiIsIF9f ZnVuY19fLAogCQljaGFuLT5pY190YXNrLCBjdHgpOwotLSAKMi4xOS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4EFADC282C8 for ; Mon, 28 Jan 2019 16:12:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1D9222177E for ; Mon, 28 Jan 2019 16:12:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548691942; bh=FydyrQqS7L3pk58/TeLZwsKkPXuAF7BCmMCrNMArXMQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=n07kVT+48dU2FysngIDTO8D+aHQAaAyEUyqN3bAwGszOCI7o/ufnPqyS+CPeisb2p B1BZo/Lz49kERRMNbuu9z1u9wIQ9psB8v5HOq3PdkdQ4HsqLxzM0DjxrRNXWfeR6Fp SNdS54JPDzpvdp6Xq4kFW32Ax2GUXD8FH55LKonU= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732465AbfA1QMT (ORCPT ); Mon, 28 Jan 2019 11:12:19 -0500 Received: from mail.kernel.org ([198.145.29.99]:40238 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732467AbfA1QMR (ORCPT ); Mon, 28 Jan 2019 11:12:17 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 96C4F2148E; Mon, 28 Jan 2019 16:12:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548691936; bh=FydyrQqS7L3pk58/TeLZwsKkPXuAF7BCmMCrNMArXMQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bBOC1o4D3Pg4vQ0aVZoFZcavcjvhTDBLB71uDg9iGTqPpfPBTBTuFZ5e096uHWp+t v9sQpAvrIGglKXdevOga0HFdTW10JubNqBEUV7GypQcjjzc0QEKlue4tHL8GGIngAv 0imiZ3eC2lVJ+sv+ASd9cfkBj+WvJuGiZ/+omhJU= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Steve Longerbeam , Philipp Zabel , Sasha Levin , dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 4.14 006/170] gpu: ipu-v3: image-convert: Prevent race between run and unprepare Date: Mon, 28 Jan 2019 11:09:16 -0500 Message-Id: <20190128161200.55107-6-sashal@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190128161200.55107-1-sashal@kernel.org> References: <20190128161200.55107-1-sashal@kernel.org> MIME-Version: 1.0 X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Steve Longerbeam [ Upstream commit 819bec35c8c9706185498c9222bd244e0781ad35 ] Prevent possible race by parallel threads between ipu_image_convert_run() and ipu_image_convert_unprepare(). This involves setting ctx->aborting to true unconditionally so that no new job runs can be queued during unprepare, and holding the ctx->aborting flag until the context is freed. Note that the "normal" ipu_image_convert_abort() case (e.g. not during context unprepare) should clear the ctx->aborting flag after aborting any active run and clearing the context's pending queue. This is because it should be possible to continue to use the conversion context and queue more runs after an abort. Signed-off-by: Steve Longerbeam Tested-by: Philipp Zabel Signed-off-by: Philipp Zabel Signed-off-by: Sasha Levin --- drivers/gpu/ipu-v3/ipu-image-convert.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/ipu-v3/ipu-image-convert.c b/drivers/gpu/ipu-v3/ipu-image-convert.c index 524a717ab28e..a5e33d58e02f 100644 --- a/drivers/gpu/ipu-v3/ipu-image-convert.c +++ b/drivers/gpu/ipu-v3/ipu-image-convert.c @@ -1518,7 +1518,7 @@ int ipu_image_convert_queue(struct ipu_image_convert_run *run) EXPORT_SYMBOL_GPL(ipu_image_convert_queue); /* Abort any active or pending conversions for this context */ -void ipu_image_convert_abort(struct ipu_image_convert_ctx *ctx) +static void __ipu_image_convert_abort(struct ipu_image_convert_ctx *ctx) { struct ipu_image_convert_chan *chan = ctx->chan; struct ipu_image_convert_priv *priv = chan->priv; @@ -1545,7 +1545,7 @@ void ipu_image_convert_abort(struct ipu_image_convert_ctx *ctx) need_abort = (run_count || active_run); - ctx->aborting = need_abort; + ctx->aborting = true; spin_unlock_irqrestore(&chan->irqlock, flags); @@ -1566,7 +1566,11 @@ void ipu_image_convert_abort(struct ipu_image_convert_ctx *ctx) dev_warn(priv->ipu->dev, "%s: timeout\n", __func__); force_abort(ctx); } +} +void ipu_image_convert_abort(struct ipu_image_convert_ctx *ctx) +{ + __ipu_image_convert_abort(ctx); ctx->aborting = false; } EXPORT_SYMBOL_GPL(ipu_image_convert_abort); @@ -1580,7 +1584,7 @@ void ipu_image_convert_unprepare(struct ipu_image_convert_ctx *ctx) bool put_res; /* make sure no runs are hanging around */ - ipu_image_convert_abort(ctx); + __ipu_image_convert_abort(ctx); dev_dbg(priv->ipu->dev, "%s: task %u: removing ctx %p\n", __func__, chan->ic_task, ctx); -- 2.19.1