From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 4.20 012/304] gpu: ipu-v3: image-convert: Prevent race between run and unprepare Date: Mon, 28 Jan 2019 10:38:49 -0500 Message-ID: <20190128154341.47195-12-sashal@kernel.org> References: <20190128154341.47195-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 E091C6E4E3 for ; Mon, 28 Jan 2019 15:43:57 +0000 (UTC) In-Reply-To: <20190128154341.47195-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 Yi9kcml2ZXJzL2dwdS9pcHUtdjMvaXB1LWltYWdlLWNvbnZlcnQuYwppbmRleCBmNDA4MTk2Mjc4 NGMuLjkxNjUzYWRjNDFjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1pbWFn ZS1jb252ZXJ0LmMKKysrIGIvZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1pbWFnZS1jb252ZXJ0LmMK QEAgLTE1MjQsNyArMTUyNCw3IEBAIHVubG9jazoKIEVYUE9SVF9TWU1CT0xfR1BMKGlwdV9pbWFn ZV9jb252ZXJ0X3F1ZXVlKTsKIAogLyogQWJvcnQgYW55IGFjdGl2ZSBvciBwZW5kaW5nIGNvbnZl cnNpb25zIGZvciB0aGlzIGNvbnRleHQgKi8KLXZvaWQgaXB1X2ltYWdlX2NvbnZlcnRfYWJvcnQo c3RydWN0IGlwdV9pbWFnZV9jb252ZXJ0X2N0eCAqY3R4KQorc3RhdGljIHZvaWQgX19pcHVfaW1h Z2VfY29udmVydF9hYm9ydChzdHJ1Y3QgaXB1X2ltYWdlX2NvbnZlcnRfY3R4ICpjdHgpCiB7CiAJ c3RydWN0IGlwdV9pbWFnZV9jb252ZXJ0X2NoYW4gKmNoYW4gPSBjdHgtPmNoYW47CiAJc3RydWN0 IGlwdV9pbWFnZV9jb252ZXJ0X3ByaXYgKnByaXYgPSBjaGFuLT5wcml2OwpAQCAtMTU1MSw3ICsx NTUxLDcgQEAgdm9pZCBpcHVfaW1hZ2VfY29udmVydF9hYm9ydChzdHJ1Y3QgaXB1X2ltYWdlX2Nv bnZlcnRfY3R4ICpjdHgpCiAKIAluZWVkX2Fib3J0ID0gKHJ1bl9jb3VudCB8fCBhY3RpdmVfcnVu KTsKIAotCWN0eC0+YWJvcnRpbmcgPSBuZWVkX2Fib3J0OworCWN0eC0+YWJvcnRpbmcgPSB0cnVl OwogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hhbi0+aXJxbG9jaywgZmxhZ3MpOwogCkBA IC0xNTcyLDcgKzE1NzIsMTEgQEAgdm9pZCBpcHVfaW1hZ2VfY29udmVydF9hYm9ydChzdHJ1Y3Qg aXB1X2ltYWdlX2NvbnZlcnRfY3R4ICpjdHgpCiAJCWRldl93YXJuKHByaXYtPmlwdS0+ZGV2LCAi JXM6IHRpbWVvdXRcbiIsIF9fZnVuY19fKTsKIAkJZm9yY2VfYWJvcnQoY3R4KTsKIAl9Cit9CiAK K3ZvaWQgaXB1X2ltYWdlX2NvbnZlcnRfYWJvcnQoc3RydWN0IGlwdV9pbWFnZV9jb252ZXJ0X2N0 eCAqY3R4KQoreworCV9faXB1X2ltYWdlX2NvbnZlcnRfYWJvcnQoY3R4KTsKIAljdHgtPmFib3J0 aW5nID0gZmFsc2U7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChpcHVfaW1hZ2VfY29udmVydF9hYm9y dCk7CkBAIC0xNTg2LDcgKzE1OTAsNyBAQCB2b2lkIGlwdV9pbWFnZV9jb252ZXJ0X3VucHJlcGFy ZShzdHJ1Y3QgaXB1X2ltYWdlX2NvbnZlcnRfY3R4ICpjdHgpCiAJYm9vbCBwdXRfcmVzOwogCiAJ LyogbWFrZSBzdXJlIG5vIHJ1bnMgYXJlIGhhbmdpbmcgYXJvdW5kICovCi0JaXB1X2ltYWdlX2Nv bnZlcnRfYWJvcnQoY3R4KTsKKwlfX2lwdV9pbWFnZV9jb252ZXJ0X2Fib3J0KGN0eCk7CiAKIAlk ZXZfZGJnKHByaXYtPmlwdS0+ZGV2LCAiJXM6IHRhc2sgJXU6IHJlbW92aW5nIGN0eCAlcFxuIiwg X19mdW5jX18sCiAJCWNoYW4tPmljX3Rhc2ssIGN0eCk7Ci0tIAoyLjE5LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= 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,URIBL_BLOCKED,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 E31DAC282C8 for ; Mon, 28 Jan 2019 15:44:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AE3772173C for ; Mon, 28 Jan 2019 15:44:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548690242; bh=Hdbl9KKGLFt+u7ACAyJqO03MF1R02UVt3YORmoCEymo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=F1186KGrzYD60pZN7MBhiEux3g12601GA+e8mooj77GHae68VxH5G0JUgzqspZDbA BqjbaJeJ6XugLT+gzqoOj+ZPqPb3br1gSkPncyYe8JhX2h6LAHrHsb11wY8xKAD9uf fwLn90PcY0sIvp9L39AQ7mf7UpCAhjXytjsqKdr4= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727150AbfA1PoB (ORCPT ); Mon, 28 Jan 2019 10:44:01 -0500 Received: from mail.kernel.org ([198.145.29.99]:57174 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727132AbfA1Pn6 (ORCPT ); Mon, 28 Jan 2019 10:43:58 -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 732282147A; Mon, 28 Jan 2019 15:43:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548690237; bh=Hdbl9KKGLFt+u7ACAyJqO03MF1R02UVt3YORmoCEymo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nP0JUDH/9DqGMLxQz9ji/6ak2BiNwldmDRTd0g9T8kfxEg0lC51CpsRYnMbPGvsr6 S3EhdxzjRkcIhlWBwrXwqQi9w9gMwtLNM2/ddcSEsLLoVaqnWNYde5YUL46iIuvtHp Di9iuAKVADGAgju8/ynaYJucb5/4JsRijYKadXR4= 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.20 012/304] gpu: ipu-v3: image-convert: Prevent race between run and unprepare Date: Mon, 28 Jan 2019 10:38:49 -0500 Message-Id: <20190128154341.47195-12-sashal@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190128154341.47195-1-sashal@kernel.org> References: <20190128154341.47195-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 f4081962784c..91653adc41cc 100644 --- a/drivers/gpu/ipu-v3/ipu-image-convert.c +++ b/drivers/gpu/ipu-v3/ipu-image-convert.c @@ -1524,7 +1524,7 @@ unlock: 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; @@ -1551,7 +1551,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); @@ -1572,7 +1572,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); @@ -1586,7 +1590,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