Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4732747pxj; Wed, 12 May 2021 11:58:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyLXmKO39vtIL5BlSsEQoiuVavc2LRVYImCTwci/+8MhIea5ue4avhxJ3EkcrTzh66Puk8w X-Received: by 2002:a9d:69d7:: with SMTP id v23mr20268802oto.156.1620845907976; Wed, 12 May 2021 11:58:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620845907; cv=none; d=google.com; s=arc-20160816; b=gsewkWdz0XIvrck96JpeP0oMrbtUqPc9NcTI5x45uqZjfS0L4Xv+kMkCrZJx/JL5Ob ygFkZbexCIPyiFtHKjCzpRsIbTNHE70MWaHS6d81rXUVbzOyyWTHHa44Tmrz8vpImDQX A35Yw3Jo2cEGQfcBuiLEDjtS6M78dtyBWmmo0frznLvqfdzqo6AEREdOb/+lPmXvnRk5 kziKnHeqAG76QEkbFh6X0i7AGZhC5ZUiiOIQ/dm9ZTpR5ud1FOUxToWa34+c9fKntqmw N/V2FGM2dmN5QTAC2rllO23kh5ySg0jyoAE0Pf91x48WH5aBXdQBouN0r1ERsIO4DNbb BK9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=kbbrdFHhotlCgrbw43/I5hPx4GmG5sd1C5MfIJ6ealg=; b=0gmrjb2IoCwQ/DXx5G5HllYPTRnQxFxjItW/WCl37ba6xRtX+gCUFOmS14FQ9iYfGI /gi61+icudNqK6VYvat1yLHeTG3p3ksNyfN/gVhwAryyrzQjcMW5Zy5gv8AdZLnEK8ic Hsjbjq1Lle+6Vo/4pwHlaLOspv/aQDabx7McQdPQscGAuK98LKTMUuT2GpYUMVqvRgIO ux8WWddLnAaqYAAE4eK+wjn01xynZvs/ylv2Go78laEVQIjBiNVqtSqaPicLWsKRB4u1 fcEj7jadkXGz2QfPj3N/L99aeoENgwO4ALHIMbUROtVfyycuebt1E2w22sS6bJffLxqf 0/QA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=QA0iKDd4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y82si562372oiy.160.2021.05.12.11.58.13; Wed, 12 May 2021 11:58:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=QA0iKDd4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376534AbhELSzB (ORCPT + 99 others); Wed, 12 May 2021 14:55:01 -0400 Received: from mail.kernel.org ([198.145.29.99]:35700 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244052AbhELQm3 (ORCPT ); Wed, 12 May 2021 12:42:29 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 9947B61D11; Wed, 12 May 2021 16:09:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620835799; bh=JMjykbgo5+OoBV6cGw3eXUL3+0GqGQ7r/Rc8jtDtI2k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QA0iKDd4ThuqW3UH7pY2YssNHXHTifkgHZ96boG41w1WNjunDaS7vGU/1mFHQYKvJ V3mzBovNJjQUY5P/2Y/KT+OvVn9jeBZDThya14ZUu69hd8sdiaaaIwCYSdDTuKEM+R IpB9jCWMuEFBIsnnz5JOcRIwL3JTXemUirZU3+bg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Lu Baolu , Jacob Pan , Joerg Roedel , Sasha Levin Subject: [PATCH 5.12 454/677] iommu/vt-d: Reject unsupported page request modes Date: Wed, 12 May 2021 16:48:20 +0200 Message-Id: <20210512144852.441825619@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210512144837.204217980@linuxfoundation.org> References: <20210512144837.204217980@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jacob Pan [ Upstream commit 78a523fe73b81b4447beb2d6c78c9fafae24eebb ] When supervisor/privilige mode SVM is used, we bind init_mm.pgd with a supervisor PASID. There should not be any page fault for init_mm. Execution request with DMA read is also not supported. This patch checks PRQ descriptor for both unsupported configurations, reject them both with invalid responses. Fixes: 1c4f88b7f1f92 ("iommu/vt-d: Shared virtual address in scalable mode") Acked-by: Lu Baolu Signed-off-by: Jacob Pan Link: https://lore.kernel.org/r/1614680040-1989-4-git-send-email-jacob.jun.pan@linux.intel.com Signed-off-by: Joerg Roedel Signed-off-by: Sasha Levin --- drivers/iommu/intel/svm.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/intel/svm.c b/drivers/iommu/intel/svm.c index 574a7e657a9a..4627437ae1c0 100644 --- a/drivers/iommu/intel/svm.c +++ b/drivers/iommu/intel/svm.c @@ -920,7 +920,17 @@ static irqreturn_t prq_event_thread(int irq, void *d) ((unsigned long long *)req)[1]); goto no_pasid; } - + /* We shall not receive page request for supervisor SVM */ + if (req->pm_req && (req->rd_req | req->wr_req)) { + pr_err("Unexpected page request in Privilege Mode"); + /* No need to find the matching sdev as for bad_req */ + goto no_pasid; + } + /* DMA read with exec requeset is not supported. */ + if (req->exe_req && req->rd_req) { + pr_err("Execution request not supported\n"); + goto no_pasid; + } if (!svm || svm->pasid != req->pasid) { rcu_read_lock(); svm = ioasid_find(NULL, req->pasid, NULL); -- 2.30.2