Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1759219ybz; Sat, 18 Apr 2020 07:55:13 -0700 (PDT) X-Google-Smtp-Source: APiQypKMSQpMw6F9rL1yZCiUPCt2I4STXUlBiOsCsbOvNY5YJsYkb7kquJdfoSk2VG8OuE6g8XPq X-Received: by 2002:a50:9dc9:: with SMTP id l9mr6955329edk.39.1587221713755; Sat, 18 Apr 2020 07:55:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587221713; cv=none; d=google.com; s=arc-20160816; b=eiKCLzl9udHhBq+4PJD7DEZ+/gqDGa4TeabEBZDmoruGJWfJJA9djTiNigbagaQxxh 0Gd9oSu0z6mdebp0cuUssSHJ+YQeZCx1GNRXIdQEEOu0WR233QvaRnWH7CNMwn4yifum yw4oFWbRXytTz97rCo08933vhl02/D2nLE6ARgpckw3lT4+c3QCwKJK5XYRJyKIvIuWh 1kxNPupJjQ6V+9oGhm2pVeGyjVjjKhM3AnLq1te/Nf4LPGgILNXS9vbJA4Bspazll0uu GR3CRLnEfVaNsON64gc64cHd0jPwJwVgJQfZEKmjsIS5Vd0c59VViMW//rrTSvQzN1hs TP3A== 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=7vkicFAKbPWSY02T46BUGr4hPcY/XCG087aSQpNCfPU=; b=yjL7mq9vsUBw3m/pAYi26mNDMkLOxRv8pAUcCqK8l8tHkbiNV5iLKE6TjUB8twULZt 055E2vIdBujfVBK+Q0xD0WvRnZj5rzxS/Dz3lG8b5kmreTiM1tWHicMNDwz6amByF7CG WKTtaz+TQw2VTrX6OgbyPIW25NSec0w2rZhYvic1d581oO+tO4ATX/g+nyI/bG84O5eh wueDbaM3FiFzjme5kGljQeHc2eJrmJDaTOoWNxwPtSEVxbVqeeS+SP2UYXPvYpZKaSXw x8VffnBUGcFtYywxvtMt2uQu6FpxtxJevON2Bse3fkljZ3TKGBic9yny266uZLGq5TTP rdlw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=lhpUdqYi; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cx17si11796929edb.383.2020.04.18.07.54.43; Sat, 18 Apr 2020 07:55:13 -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=@kernel.org header.s=default header.b=lhpUdqYi; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728882AbgDROvF (ORCPT + 99 others); Sat, 18 Apr 2020 10:51:05 -0400 Received: from mail.kernel.org ([198.145.29.99]:53286 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728446AbgDROmv (ORCPT ); Sat, 18 Apr 2020 10:42:51 -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 3877D21D7E; Sat, 18 Apr 2020 14:42:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587220971; bh=Vmaa9Wy7Y6nNBD+Df2+E06G8y9s2D5mYbsUi7aBJcbE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lhpUdqYiaVFhbmIqsGLGVUfYGqCLNkpjfAtqS/npHPZomitMcQWPJfvU5Y1cPUF+H ZS/I9m/vqwH9ahL0dYoALRJGoYu57lvb0v7l3CS+HySWV8tE0eSwihiwB1zxMin/tu xM7+92Eo1goMpMFgZX2O4VpvU1u7ZOn+sLvhe2is= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: David Hildenbrand , Claudio Imbrenda , Christian Borntraeger , Sasha Levin , kvm@vger.kernel.org, linux-s390@vger.kernel.org Subject: [PATCH AUTOSEL 4.19 18/47] KVM: s390: vsie: Fix possible race when shadowing region 3 tables Date: Sat, 18 Apr 2020 10:41:58 -0400 Message-Id: <20200418144227.9802-18-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200418144227.9802-1-sashal@kernel.org> References: <20200418144227.9802-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: David Hildenbrand [ Upstream commit 1493e0f944f3c319d11e067c185c904d01c17ae5 ] We have to properly retry again by returning -EINVAL immediately in case somebody else instantiated the table concurrently. We missed to add the goto in this function only. The code now matches the other, similar shadowing functions. We are overwriting an existing region 2 table entry. All allocated pages are added to the crst_list to be freed later, so they are not lost forever. However, when unshadowing the region 2 table, we wouldn't trigger unshadowing of the original shadowed region 3 table that we replaced. It would get unshadowed when the original region 3 table is modified. As it's not connected to the page table hierarchy anymore, it's not going to get used anymore. However, for a limited time, this page table will stick around, so it's in some sense a temporary memory leak. Identified by manual code inspection. I don't think this classifies as stable material. Fixes: 998f637cc4b9 ("s390/mm: avoid races on region/segment/page table shadowing") Signed-off-by: David Hildenbrand Link: https://lore.kernel.org/r/20200403153050.20569-4-david@redhat.com Reviewed-by: Claudio Imbrenda Reviewed-by: Christian Borntraeger Signed-off-by: Christian Borntraeger Signed-off-by: Sasha Levin --- arch/s390/mm/gmap.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/s390/mm/gmap.c b/arch/s390/mm/gmap.c index 911c7ded35f15..fd67684a305d4 100644 --- a/arch/s390/mm/gmap.c +++ b/arch/s390/mm/gmap.c @@ -1834,6 +1834,7 @@ int gmap_shadow_r3t(struct gmap *sg, unsigned long saddr, unsigned long r3t, goto out_free; } else if (*table & _REGION_ENTRY_ORIGIN) { rc = -EAGAIN; /* Race with shadow */ + goto out_free; } crst_table_init(s_r3t, _REGION3_ENTRY_EMPTY); /* mark as invalid as long as the parent table is not protected */ -- 2.20.1