From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 4.19 087/167] drm/i915: Handle vm_mmap error during I915_GEM_MMAP ioctl with WC set Date: Tue, 3 Sep 2019 12:23:59 -0400 Message-ID: <20190903162519.7136-87-sashal@kernel.org> References: <20190903162519.7136-1-sashal@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190903162519.7136-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 , Tvrtko Ursulin , Tvrtko Ursulin , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Adam Zabrocki List-Id: dri-devel@lists.freedesktop.org RnJvbTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgoK WyBVcHN0cmVhbSBjb21taXQgZWJmYjY5Nzc4MDFkYTUyMWQ4ZDVkNzUyZDM3M2ExODdlMmEyYjli MyBdCgpBZGQgZXJyIGdvdG8gbGFiZWwgYW5kIHVzZSBpdCB3aGVuIFZNQSBjYW4ndCBiZSBlc3Rh Ymxpc2hlZCBvciBjaGFuZ2VzCnVuZGVybmVhdGguCgp2MjoKLSBEcm9wcGluZyBGaXhlczogYXMg aXQncyBpbmRlZWQgaW1wb3NzaWJsZSB0byByYWNlIGFuIG9iamVjdCB0byB0aGUKICBlcnJvciBh ZGRyZXNzLiAoQ2hyaXMpCnYzOgotIFVzZSBJU19FUlJfVkFMVUUgKENocmlzKQoKUmVwb3J0ZWQt Ynk6IEFkYW0gWmFicm9ja2kgPGFkYW16YUBtaWNyb3NvZnQuY29tPgpTaWduZWQtb2ZmLWJ5OiBK b29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNjOiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFR2cnRrbyBVcnN1bGluIDx0 dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+CkNjOiBBZGFtIFphYnJvY2tpIDxhZGFtemFA bWljcm9zb2Z0LmNvbT4KUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxp bkBpbnRlbC5jb20+ICN2MgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+Ckxpbms6IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRj aC9tc2dpZC8yMDE5MDIwNzA4NTQ1NC4xMDU5OC0yLWpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRl bC5jb20KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4gPHNhc2hhbEBrZXJuZWwub3JnPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgfCAxMiArKysrKysrKysrLS0KIDEgZmls ZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCmluZGV4IGU4MWFiZDQ2OGExNWQuLjk2MzRkM2FkYjhkMDEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwpAQCAtMTg4MSw2ICsxODgxLDkgQEAgaTkxNV9nZW1fbW1hcF9pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWFkZHIgPSB2bV9tbWFwKG9iai0+ YmFzZS5maWxwLCAwLCBhcmdzLT5zaXplLAogCQkgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklU RSwgTUFQX1NIQVJFRCwKIAkJICAgICAgIGFyZ3MtPm9mZnNldCk7CisJaWYgKElTX0VSUl9WQUxV RShhZGRyKSkKKwkJZ290byBlcnI7CisKIAlpZiAoYXJncy0+ZmxhZ3MgJiBJOTE1X01NQVBfV0Mp IHsKIAkJc3RydWN0IG1tX3N0cnVjdCAqbW0gPSBjdXJyZW50LT5tbTsKIAkJc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWE7CkBAIC0xODk2LDE3ICsxODk5LDIyIEBAIGk5MTVfZ2VtX21tYXBfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJZWxzZQogCQkJYWRkciA9 IC1FTk9NRU07CiAJCXVwX3dyaXRlKCZtbS0+bW1hcF9zZW0pOworCQlpZiAoSVNfRVJSX1ZBTFVF KGFkZHIpKQorCQkJZ290byBlcnI7CiAKIAkJLyogVGhpcyBtYXkgcmFjZSwgYnV0IHRoYXQncyBv aywgaXQgb25seSBnZXRzIHNldCAqLwogCQlXUklURV9PTkNFKG9iai0+ZnJvbnRidWZmZXJfZ2d0 dF9vcmlnaW4sIE9SSUdJTl9DUFUpOwogCX0KIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Ci0J aWYgKElTX0VSUigodm9pZCAqKWFkZHIpKQotCQlyZXR1cm4gYWRkcjsKIAogCWFyZ3MtPmFkZHJf cHRyID0gKHVpbnQ2NF90KSBhZGRyOwogCiAJcmV0dXJuIDA7CisKK2VycjoKKwlpOTE1X2dlbV9v YmplY3RfcHV0KG9iaik7CisKKwlyZXR1cm4gYWRkcjsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGlu dCB0aWxlX3Jvd19wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQotLSAKMi4y MC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw= 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=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,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 657C0C3A5A2 for ; Tue, 3 Sep 2019 16:35:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3ABAF23431 for ; Tue, 3 Sep 2019 16:35:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567528502; bh=zhVFKvgOVO0h6u6YsHm1erT5jr7By0XHYjeYvoOXFSE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=hrXdHWyX3DqgDUrAttqvSBMr+mSMhqGduxmBFtnNoaqDJToTR9nVLuUo/7wKutMqv N6booofh38XUoEvmFpba6j4Q6CVdWrY+Cs+ZaWS0wyVYo7ubHjR0/DZRtbMxuDfWNt Wmzta+cp0ZHZ9KbB+NsVSKVJaLjmoKaNQgXXMPuU= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731248AbfICQfA (ORCPT ); Tue, 3 Sep 2019 12:35:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:49488 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730975AbfICQ1y (ORCPT ); Tue, 3 Sep 2019 12:27:54 -0400 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 CA5812343A; Tue, 3 Sep 2019 16:27:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567528073; bh=zhVFKvgOVO0h6u6YsHm1erT5jr7By0XHYjeYvoOXFSE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PNHSb3NzwJeamYcfHj4IP9o14jvGmweINJmk5Nh4Uv13qCZox1BVC005DO9Q84Ehp qumff+XuQL2ytG1bn60/x7rmHCVVHeAnk69DH5WH2S6toVqEacwE7i4lckMyeD9nvk EOSBoGsSkDjnWaiTNCZJ62jF3Hn4PBxyqjNF9jfg= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Joonas Lahtinen , Adam Zabrocki , Chris Wilson , Tvrtko Ursulin , Tvrtko Ursulin , Sasha Levin , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 4.19 087/167] drm/i915: Handle vm_mmap error during I915_GEM_MMAP ioctl with WC set Date: Tue, 3 Sep 2019 12:23:59 -0400 Message-Id: <20190903162519.7136-87-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190903162519.7136-1-sashal@kernel.org> References: <20190903162519.7136-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review 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: Joonas Lahtinen [ Upstream commit ebfb6977801da521d8d5d752d373a187e2a2b9b3 ] Add err goto label and use it when VMA can't be established or changes underneath. v2: - Dropping Fixes: as it's indeed impossible to race an object to the error address. (Chris) v3: - Use IS_ERR_VALUE (Chris) Reported-by: Adam Zabrocki Signed-off-by: Joonas Lahtinen Cc: Chris Wilson Cc: Tvrtko Ursulin Cc: Adam Zabrocki Reviewed-by: Tvrtko Ursulin #v2 Reviewed-by: Chris Wilson Link: https://patchwork.freedesktop.org/patch/msgid/20190207085454.10598-2-joonas.lahtinen@linux.intel.com Signed-off-by: Sasha Levin --- drivers/gpu/drm/i915/i915_gem.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index e81abd468a15d..9634d3adb8d01 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -1881,6 +1881,9 @@ i915_gem_mmap_ioctl(struct drm_device *dev, void *data, addr = vm_mmap(obj->base.filp, 0, args->size, PROT_READ | PROT_WRITE, MAP_SHARED, args->offset); + if (IS_ERR_VALUE(addr)) + goto err; + if (args->flags & I915_MMAP_WC) { struct mm_struct *mm = current->mm; struct vm_area_struct *vma; @@ -1896,17 +1899,22 @@ i915_gem_mmap_ioctl(struct drm_device *dev, void *data, else addr = -ENOMEM; up_write(&mm->mmap_sem); + if (IS_ERR_VALUE(addr)) + goto err; /* This may race, but that's ok, it only gets set */ WRITE_ONCE(obj->frontbuffer_ggtt_origin, ORIGIN_CPU); } i915_gem_object_put(obj); - if (IS_ERR((void *)addr)) - return addr; args->addr_ptr = (uint64_t) addr; return 0; + +err: + i915_gem_object_put(obj); + + return addr; } static unsigned int tile_row_pages(struct drm_i915_gem_object *obj) -- 2.20.1