Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp2917134ybx; Fri, 8 Nov 2019 11:14:34 -0800 (PST) X-Google-Smtp-Source: APXvYqw8MODjhus0aPoWy6QuF+xB5uxq4xtX0Y6OiLnRVY8fp9DJUgQ5XTBAC7rg5aHvJYOXxa9j X-Received: by 2002:a50:fa8a:: with SMTP id w10mr12118914edr.179.1573240474517; Fri, 08 Nov 2019 11:14:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573240474; cv=none; d=google.com; s=arc-20160816; b=DBphCoPPWtDk9Yc7FRl6DyQcjZ9qxrhg4EHHJ7M78xubU9SwCt09qkzeo9Dcl1b0DU X8S2vtWJ7tDRXLkkdHfHGcHTvLcKx+pBc2sqo3zHbAW/mhzBPUO9E8SdsgBeRSHKAo4P Lvp+iHoEu/uTDkcIITZsbE8gB6WN+DeIrqP7atVo/uk6ans9Pkgt7lItFsBlJPoIkHmX CVDL8DcasFbu90gZCAtATfPhHlxd4A6GhHWLR75/DSX+LlVkRi5kxKcgQE47uNJ5qvdb aefmn4aK8G9d0qVWauaCVW7zyYPal/LwzzBPMyp0/Cmvc44ZSl5TX3CLV7cBTWkWnXvn luVA== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=IHaJ2T97Yzhi19RjUR6FxKRAg+ui7dobkh3/zgru71k=; b=UcLizo2lG8g7tTEPKqiSPCCqMKq7EZghgjc2oaFiL7qmA3TCFhejoC4755Y8anx+qD DLRfNp6IJ4gxiU/F7+4PkNVEpcUYBYOY0Pm2Ri9eqty3s7WPxn6BB9H8KKHGuKnDopOA wYMjA0h7OKa8tUgU8xQmkzBOb0xflkec51EsvmnDMFgjerq6neopitekXyBVngLlRmlv H55Zicoym5TLtxfKErQOAI1YdFz2JvkdJX+OyICl+lLT+cfbpkrwCUVpQP0b/48rolzV K+84KjyiMvCLqd7ZC8eXrftnzoFJEJEQwCTHjzUUKmRLvW7U/2RMB6YE5GL6U+tgUkMV 8qRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=icuVCbF1; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d6si5324984eda.262.2019.11.08.11.14.11; Fri, 08 Nov 2019 11:14:34 -0800 (PST) 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=icuVCbF1; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390251AbfKHTHR (ORCPT + 99 others); Fri, 8 Nov 2019 14:07:17 -0500 Received: from mail.kernel.org ([198.145.29.99]:37934 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387807AbfKHTHP (ORCPT ); Fri, 8 Nov 2019 14:07:15 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 5976621D7B; Fri, 8 Nov 2019 19:07:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573240034; bh=K32ZWAUHZYwZ6ldFuJYFcJMs3ik48+4h5AWGsB4QZsI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=icuVCbF1NC1W1S6kWMokXtH6kKxRMkBl4RFbZe9t3MeO9fxJKVLvzwJO6XuKL4NNq 4wGC/z/StAIlm60zmiOTfFBk68Hp0bHAsLgU6KyPZbhQWgm3iIgkLvW5p9SgHSapEK HogkzX3m6zVl0kydpo17BpjtoXzJ/W4pHszaXWOI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, afzal mohammed , Vladimir Murzin , Russell King , Sasha Levin Subject: [PATCH 5.3 064/140] ARM: 8926/1: v7m: remove register save to stack before svc Date: Fri, 8 Nov 2019 19:49:52 +0100 Message-Id: <20191108174909.263966482@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191108174900.189064908@linuxfoundation.org> References: <20191108174900.189064908@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: afzal mohammed [ Upstream commit 2ecb287998a47cc0a766f6071f63bc185f338540 ] r0-r3 & r12 registers are saved & restored, before & after svc respectively. Intention was to preserve those registers across thread to handler mode switch. On v7-M, hardware saves the register context upon exception in AAPCS complaint way. Restoring r0-r3 & r12 is done from stack location where hardware saves it, not from the location on stack where these registers were saved. To clarify, on stm32f429 discovery board: 1. before svc, sp - 0x90009ff8 2. r0-r3,r12 saved to 0x90009ff8 - 0x9000a00b 3. upon svc, h/w decrements sp by 32 & pushes registers onto stack 4. after svc, sp - 0x90009fd8 5. r0-r3,r12 restored from 0x90009fd8 - 0x90009feb Above means r0-r3,r12 is not restored from the location where they are saved, but since hardware pushes the registers onto stack, the registers are restored correctly. Note that during register saving to stack (step 2), it goes past 0x9000a000. And it seems, based on objdump, there are global symbols residing there, and it perhaps can cause issues on a non-XIP Kernel (on XIP, data section is setup later). Based on the analysis above, manually saving registers onto stack is at best no-op and at worst can cause data section corruption. Hence remove storing of registers onto stack before svc. Fixes: b70cd406d7fe ("ARM: 8671/1: V7M: Preserve registers across switch from Thread to Handler mode") Signed-off-by: afzal mohammed Acked-by: Vladimir Murzin Signed-off-by: Russell King Signed-off-by: Sasha Levin --- arch/arm/mm/proc-v7m.S | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/arm/mm/proc-v7m.S b/arch/arm/mm/proc-v7m.S index efebf4120a0c4..1a49d503eafc8 100644 --- a/arch/arm/mm/proc-v7m.S +++ b/arch/arm/mm/proc-v7m.S @@ -132,7 +132,6 @@ __v7m_setup_cont: dsb mov r6, lr @ save LR ldr sp, =init_thread_union + THREAD_START_SP - stmia sp, {r0-r3, r12} cpsie i svc #0 1: cpsid i -- 2.20.1