Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp2213043ybe; Tue, 3 Sep 2019 09:28:29 -0700 (PDT) X-Google-Smtp-Source: APXvYqwqSXr+4hJmFoUdmwEUis887f3jwUK+Ax2bp3Mbf3pZk4jkjkeIHwGOOd2zD4Ox6Agq59W5 X-Received: by 2002:a63:c0d:: with SMTP id b13mr30828306pgl.420.1567528109370; Tue, 03 Sep 2019 09:28:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567528109; cv=none; d=google.com; s=arc-20160816; b=Lw5lH3w0IbDac9rEh20CRInkz42/9rDZtflUpnc53Qr22pAN0qHl2ioIj/tj5vOVRt Ao+IqA68mBn5yvaFV7GBBjkOoAxw6n1wbWZN8jE1RpPFbjWAMC6/JTwowTteU1UMhnaq Eh1lfQUpBwvubZ+aGG+XEHL5p7pljoEQJCkQAsj8KLkZyRK/MZ8UlAx+1uAOCglIiEiU Zzkj3bMjZVreE+XojY1J85x4Nk4YSfghWvpO403sI60wr/LRo9alNudpq7kbH/p2bPTc /iyfzc6ZPvPATp9KXEcqP18AiaFm/D5aQ5rNkyhxAUsz4ltCJz/sKGgQdOOGpICpM690 lVmQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=J3aWxOuIssRus94jG6zaLKnJ4LGen/AH6i9IY7EzQL0=; b=S4YNtxW0rvn9xevXz3Sp9/+bDRFtdibZO2AURzXysJuRJbIw6/WDAJjqSwK4/AiRo9 l6ohW9axa08z4JohvGK65E+0bDp5W3gaSg9ycdDqi2jldYTNrUMtyVcoNa7EYEs3iwco Z8uZluR1vK0YXu/uTFRdf3VUljp3fy3xUoObxNjYzDOMAPLekcsJX1g6O6D6WkGfg7HH 9tQAaAQFiFOvbtCysuAbg6XuCSJcuaAieOcfl0Zp3hShr6nqiV3ZASUu6tUGDNgMDV9H Fg5CBBO2OOsasF8zkD6MdjvCMEHjbJMLBI9UeV0hdEq4djMGZvAJX8WOtFwjpaKC/5st tgmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=dp6fYkyI; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n6si15493058pgs.333.2019.09.03.09.28.11; Tue, 03 Sep 2019 09:28:29 -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=dp6fYkyI; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730704AbfICQ0o (ORCPT + 99 others); Tue, 3 Sep 2019 12:26:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:47532 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730669AbfICQ0f (ORCPT ); Tue, 3 Sep 2019 12:26:35 -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 E647F23789; Tue, 3 Sep 2019 16:26:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567527994; bh=99vI5vKcRGeRvP/ZZt4/CfY7lB6MsEgoUTllPFqFQXc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dp6fYkyIwKb9eqAotN4S9ZjF3u/UOnXnkQYx8CEwIRlQ4NBV5hESYAsve3r7sA7mW /BSJ0hpsHS+ZtWsk2HVaqngz7BLT/GrcUgCjIYTNx7T7PgxiRXMfdWxBovtAIR8fEc mlq81XCbAF2u7p8g+M9aaxnQhSGGGJ4oVDx4GVkw= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Yu Zhao , =?UTF-8?q?Michel=20D=C3=A4nzer?= , Alex Deucher , Sasha Levin , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 4.19 044/167] drm/amdgpu: validate user pitch alignment Date: Tue, 3 Sep 2019 12:23:16 -0400 Message-Id: <20190903162519.7136-44-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 Content-Type: text/plain; charset=UTF-8 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: Yu Zhao [ Upstream commit 89f23b6efef554766177bf51aa754bce14c3e7da ] Userspace may request pitch alignment that is not supported by GPU. Some requests 32, but GPU ignores it and uses default 64 when cpp is 4. If GEM object is allocated based on the smaller alignment, GPU DMA will go out of bound. Cc: stable@vger.kernel.org # v4.2+ Reviewed-by: Michel Dänzer Signed-off-by: Yu Zhao Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index 686a26de50f91..6e67814d33e29 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -527,6 +527,16 @@ amdgpu_display_user_framebuffer_create(struct drm_device *dev, struct drm_gem_object *obj; struct amdgpu_framebuffer *amdgpu_fb; int ret; + struct amdgpu_device *adev = dev->dev_private; + int cpp = drm_format_plane_cpp(mode_cmd->pixel_format, 0); + int pitch = mode_cmd->pitches[0] / cpp; + + pitch = amdgpu_align_pitch(adev, pitch, cpp, false); + if (mode_cmd->pitches[0] != pitch) { + DRM_DEBUG_KMS("Invalid pitch: expecting %d but got %d\n", + pitch, mode_cmd->pitches[0]); + return ERR_PTR(-EINVAL); + } obj = drm_gem_object_lookup(file_priv, mode_cmd->handles[0]); if (obj == NULL) { -- 2.20.1