Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1574889pxb; Mon, 22 Feb 2021 05:46:15 -0800 (PST) X-Google-Smtp-Source: ABdhPJzJ24PiyIN/MkNRwoVzXfnOIGNpYxBP3BFO37BTc/9FVWIvLyS8iX2DlSQmGBWgAsHx5DsA X-Received: by 2002:a17:906:3587:: with SMTP id o7mr3907627ejb.443.1614001574892; Mon, 22 Feb 2021 05:46:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614001574; cv=none; d=google.com; s=arc-20160816; b=iCc4JKyGbVhWXv5y8Geriy2CQlsqa6aGwEbtmpaeCh/wGcPJd32zVXeH38N7PP6h9/ 7mdcjgjvCZE5lZx6tAmKzEhiR05uA6wG3NoerXcgX5bGlA+Cvax9AXOej1u77dhx9FQ6 yT0afD5o3rtbjtBqDtJImmEZhuyt/JY2pdm9Vv2bfhIVTLYpd/zeN0D+FC9tm2hG88dT IIFTndygbni87bekulnbw9TUaxTqHbtm2jtOE3C0S+T+RvddqGOAS32M6dv0joo3P04i zLMepMju+2bt5ZOeM7dblSaVMGmGYzpvz1PhEkGRVBKpj258B/SdeANLooJaTzzjjBUy +S7g== 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=0dO7yElP/ithlUaYRpYpePA64K2G3/eyN+s7UySAPiI=; b=cd6sn11mr0Sl43S60o7d9WresOSZoSg+xciB4hTBbgKjS7E7gMOCVcIz32EGt8Iaog IlRIkQwFo9e42GBwGIbdWtZSBRk+a2vciKXfKVVEc8Xx9+UmNHGMfp9Cpdkpukz7d4A6 c9sIMmIIGj0ZGWZ6tukU5nlsLXprwPrCCEb5oWM5c/aJ5zxL8l02Uv8bStB1k6zTgedh blXgEjHGvHBBT6SAWk9Qg0HXFyQnVGg8jDNp9jhk+UuWpxc1sXLFsm3P5k5Y1h2QBE80 V0ArhTwc6knqCwyV8KIsmEEJgff+zwM7I1WoTZDnzmxVNQY1WtmFPTFv+hdebLxTAXCb aVcQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="Wfrp7Ps/"; 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 s5si4545633edw.463.2021.02.22.05.45.52; Mon, 22 Feb 2021 05:46:14 -0800 (PST) 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="Wfrp7Ps/"; 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 S231467AbhBVNpS (ORCPT + 99 others); Mon, 22 Feb 2021 08:45:18 -0500 Received: from mail.kernel.org ([198.145.29.99]:56570 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231401AbhBVMns (ORCPT ); Mon, 22 Feb 2021 07:43:48 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 7F6F964F46; Mon, 22 Feb 2021 12:40:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1613997638; bh=DqPe8wRoULr4RNVGmXD6I2OYreAZrv8WcbdJLjc/IFQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Wfrp7Ps/GOxLFGwx7BRx7D04BFEs5Lx0MwNgfvI7zC+UNrp6Z0zeI0gIAvpiHXnuU rc+N1K7fYpLrzAtntxRP570mjyJ+tTHTHoH/Aq6jKWyhfr2YPwlmrrNfOExsFHwkp2 xqgZgTk3Z7QldwT8WuJzIlESM0DR2uXmynzR5RV8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jan Beulich , Juergen Gross Subject: [PATCH 4.4 25/35] Xen/x86: dont bail early from clear_foreign_p2m_mapping() Date: Mon, 22 Feb 2021 13:36:21 +0100 Message-Id: <20210222121021.674569025@linuxfoundation.org> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210222121013.581198717@linuxfoundation.org> References: <20210222121013.581198717@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: Jan Beulich commit a35f2ef3b7376bfd0a57f7844bd7454389aae1fc upstream. Its sibling (set_foreign_p2m_mapping()) as well as the sibling of its only caller (gnttab_map_refs()) don't clean up after themselves in case of error. Higher level callers are expected to do so. However, in order for that to really clean up any partially set up state, the operation should not terminate upon encountering an entry in unexpected state. It is particularly relevant to notice here that set_foreign_p2m_mapping() would skip setting up a p2m entry if its grant mapping failed, but it would continue to set up further p2m entries as long as their mappings succeeded. Arguably down the road set_foreign_p2m_mapping() may want its page state related WARN_ON() also converted to an error return. This is part of XSA-361. Signed-off-by: Jan Beulich Cc: stable@vger.kernel.org Reviewed-by: Juergen Gross Signed-off-by: Juergen Gross Signed-off-by: Greg Kroah-Hartman --- arch/x86/xen/p2m.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) --- a/arch/x86/xen/p2m.c +++ b/arch/x86/xen/p2m.c @@ -763,17 +763,15 @@ int clear_foreign_p2m_mapping(struct gnt unsigned long mfn = __pfn_to_mfn(page_to_pfn(pages[i])); unsigned long pfn = page_to_pfn(pages[i]); - if (mfn == INVALID_P2M_ENTRY || !(mfn & FOREIGN_FRAME_BIT)) { + if (mfn != INVALID_P2M_ENTRY && (mfn & FOREIGN_FRAME_BIT)) + set_phys_to_machine(pfn, INVALID_P2M_ENTRY); + else ret = -EINVAL; - goto out; - } - - set_phys_to_machine(pfn, INVALID_P2M_ENTRY); } if (kunmap_ops) ret = HYPERVISOR_grant_table_op(GNTTABOP_unmap_grant_ref, - kunmap_ops, count); -out: + kunmap_ops, count) ?: ret; + return ret; } EXPORT_SYMBOL_GPL(clear_foreign_p2m_mapping);