Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp833674pxb; Tue, 3 Nov 2020 13:53:23 -0800 (PST) X-Google-Smtp-Source: ABdhPJxCv1GjE22WsiZnyb6pvTZeAy9im7+U00x35iVslLjX4LiGOyOkjy6ER6GiSBzf04cU1qN1 X-Received: by 2002:a17:906:4753:: with SMTP id j19mr20482619ejs.65.1604440402875; Tue, 03 Nov 2020 13:53:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604440402; cv=none; d=google.com; s=arc-20160816; b=kV/SEVD+ogdkGzorN+3kMYSrMJDoW781VabTBcLp0DgPc62K9B/j0bJ24g2klTrbA8 fb03Y1PKWiNGfHT32qaKdPt2N0cyB7duL7Unz2o0bqPaKUVf8owWDlNaTNWRlNfBpPMT IdXr3AlJdHvahv5gmH3tVCyhBW9ESjSO3WGaN3CQx0YULRxYIOLqNDHFvh0vTUE5GwOs IWCnwq5vFeiPqMtFL2R9rSDqhP0zH1FrDQG8it2GUTFg4uisZCEBvwEW9TTxJWyES+Uk Vcys4zAMjuPxYyp30tPqZg+H4DRmJd878WpDsxwWjerEC+RzF/s3KAQ9xDS55r9F6kf2 kpSA== 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=l8GBIh7zZ4Pq+YZgDEM8HW9oEfU5HRGsi0tS5JXVUQo=; b=eOe6idLr/tqyIPg3IUGA0L+ds7blS8RKjAGCUIQomP5EDxiiNJhnvOeMu+hIq8wtzi r2an0pfGpya6OR/yFyDVehYPpoQyXxrxNciK0GGLQQvVfe9Yykl+bePmFBUHhUV2FRdT vty1WJs7bW9fUo5g01//t+/hTh6HI+guqC/TJUAWgVTmxiP2oSJnAiUGMl31b6OYuGyc Bux7157DfJsmmInDYYGA4Ulxfa0aOicTJLy80oZzytmg4cwmCAyktI+ATiTdZoH/cpTK aHuCWibKH7iBV2LOjNtTum1kh/pQ3v7olFMXatrVqXc4N+/eHESA6juuwyh2VkCJMFAC YeoQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=wXGigPYN; 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=fail (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 t9si118516ejx.145.2020.11.03.13.52.59; Tue, 03 Nov 2020 13:53:22 -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=@kernel.org header.s=default header.b=wXGigPYN; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731670AbgKCVuf (ORCPT + 99 others); Tue, 3 Nov 2020 16:50:35 -0500 Received: from mail.kernel.org ([198.145.29.99]:41234 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731679AbgKCUs6 (ORCPT ); Tue, 3 Nov 2020 15:48:58 -0500 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (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 0E3E8223FD; Tue, 3 Nov 2020 20:48:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1604436537; bh=KHK/C3N24xx45UXY68MfwEVkkgX6kFMk9DiZL/RyCpk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wXGigPYNTaXPYbxZ1YTxd7GvV24r5CIUrNiQL7Rsl7XWyq6V4CiTqPUXYdftHody0 E9r1uZJhCCU/3c8yce0BqQxwlquHJNWmI0+ILC0aO9boZHipPfxzgwmgkQi6BpCeD/ N+Fw41ZBFXjClvHuPH04XDvJcybIUfI96vLrpBxE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Michael Neuling , Michael Ellerman Subject: [PATCH 5.9 292/391] powerpc: Fix undetected data corruption with P9N DD2.1 VSX CI load emulation Date: Tue, 3 Nov 2020 21:35:43 +0100 Message-Id: <20201103203406.774479535@linuxfoundation.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201103203348.153465465@linuxfoundation.org> References: <20201103203348.153465465@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: Michael Neuling commit 1da4a0272c5469169f78cd76cf175ff984f52f06 upstream. __get_user_atomic_128_aligned() stores to kaddr using stvx which is a VMX store instruction, hence kaddr must be 16 byte aligned otherwise the store won't occur as expected. Unfortunately when we call __get_user_atomic_128_aligned() in p9_hmi_special_emu(), the buffer we pass as kaddr (ie. vbuf) isn't guaranteed to be 16B aligned. This means that the write to vbuf in __get_user_atomic_128_aligned() has the bottom bits of the address truncated. This results in other local variables being overwritten. Also vbuf will not contain the correct data which results in the userspace emulation being wrong and hence undetected user data corruption. In the past we've been mostly lucky as vbuf has ended up aligned but this is fragile and isn't always true. CONFIG_STACKPROTECTOR in particular can change the stack arrangement enough that our luck runs out. This issue only occurs on POWER9 Nimbus <= DD2.1 bare metal. The fix is to align vbuf to a 16 byte boundary. Fixes: 5080332c2c89 ("powerpc/64s: Add workaround for P9 vector CI load issue") Cc: stable@vger.kernel.org # v4.15+ Signed-off-by: Michael Neuling Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/20201013043741.743413-1-mikey@neuling.org Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/kernel/traps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -889,7 +889,7 @@ static void p9_hmi_special_emu(struct pt { unsigned int ra, rb, t, i, sel, instr, rc; const void __user *addr; - u8 vbuf[16], *vdst; + u8 vbuf[16] __aligned(16), *vdst; unsigned long ea, msr, msr_mask; bool swap;