Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp782813ybe; Fri, 13 Sep 2019 06:19:21 -0700 (PDT) X-Google-Smtp-Source: APXvYqxrBngEmT/dScCv54q72o3xcFxUaghpOqptWx6ncGvrL/TatPVas+hQJ7D1EehdV7aRLMK3 X-Received: by 2002:a17:906:81d9:: with SMTP id e25mr39170133ejx.37.1568380761813; Fri, 13 Sep 2019 06:19:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568380761; cv=none; d=google.com; s=arc-20160816; b=gVHriyhjJsEF3OPQ8UUbdZu5kKu2/fMgggCzgDtr0wJuyb9GfIooa3t88kPdwiS2Sp pD/PIQWNZs2NrW2WzfFWTdhMBQcsoTV4XtQh+3QjNaeTtYyJFkaYETrzh3VfHzAq7MbU lfywoUW8WzgKrZxiDMAoNBJ9ltyue7wt5s3pzJxaWkqucFXKrc3ooV4WTo0T8TK6gyeC PG5sRQ8T5QtP5idKKVcNhAGBDiycOx1Rjjwv1O1xtwqjv73iU6LFqdr1TgogbH3Fkvmo S52PMiKNgEV+byYlUdtRK2IdLElWm0K+TU1EaFlOvGHGOaLl7a059F0rqlbG1LRGKjHK nM5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=/5sF+hNbfntpZOgIo2j5ZXApR9rLy7CcKoqYD/smmfo=; b=rUNlUiBjwYH9pO8aKyqAA9GQ72tm8OqYF57GbLVtteJXN68Jl07lN/95TPlH1+hkZA 993eWjItV7APPcMWdjc27YLo137I2tOM40xLD35CGsUNbJU3WQF9sL9SMZpIowjgvVkl zY/dpzziHc+U6TfR90LyYz4WSQUXbj6DHto/p782nBfqO5vzNvDis3lKoSGT7p80YZOr QApuCdOPfvOULyX8sRPGxOpIxuUWtXUseGLED6DwskE9FFJy68eNLeuZvxXqUhnHHcP3 wry3f7hzwRJlyUpTGQBwLI7MCMzx+tsD7wfS/QDg4+5RWbxMf0+HiMKAEU2ujM1IBVWD KbDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UYc87Fpb; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l18si9425570eje.275.2019.09.13.06.18.58; Fri, 13 Sep 2019 06:19:21 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UYc87Fpb; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389820AbfIMNQO (ORCPT + 99 others); Fri, 13 Sep 2019 09:16:14 -0400 Received: from mail.kernel.org ([198.145.29.99]:42840 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389787AbfIMNQN (ORCPT ); Fri, 13 Sep 2019 09:16:13 -0400 Received: from localhost (unknown [104.132.45.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 0B6A0206A5; Fri, 13 Sep 2019 13:16:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1568380572; bh=Jca2Y4YgeNJeQz0dr97Q6CH5BvgAV0DjfudxgcwUv78=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UYc87Fpb1I88410q9ibLyf4oOqr5JPk/05MSnikAJ6cMYGLmA7jTgbXT7N0yf9jBi wbc6tgSc3pDyITw0QOh9/d2BOXG3LDPbFapUDd8BK4R4DfhqU+0mRHF5vwVpY246/8 05jxzFUe1yXcNDJTvA+CPG4Jywt+6bXbAX1c5ofE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Adam Zabrocki , Joonas Lahtinen , Chris Wilson , Tvrtko Ursulin , Sasha Levin , Tvrtko Ursulin Subject: [PATCH 4.19 108/190] drm/i915: Handle vm_mmap error during I915_GEM_MMAP ioctl with WC set Date: Fri, 13 Sep 2019 14:06:03 +0100 Message-Id: <20190913130608.340127771@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190913130559.669563815@linuxfoundation.org> References: <20190913130559.669563815@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ 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