From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755556AbdJKMos (ORCPT ); Wed, 11 Oct 2017 08:44:48 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:41298 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751997AbdJKMoq (ORCPT ); Wed, 11 Oct 2017 08:44:46 -0400 X-AuditID: b6c32a4a-f73ff70000001014-e1-59de123b1da5 From: Maninder Singh To: akpm@linux-foundation.org, dvyukov@google.com, chris@chris-wilson.co.uk, kasan-dev@googlegroups.com, mark.rutland@arm.com Cc: linux-kernel@vger.kernel.org, pankaj.m@samsung.com, a.sahrawat@samsung.com, Maninder Singh , Vaneet Narang Subject: [PATCH v2] stackdepot: ignore junk last entry in case of switch from user mode. Date: Wed, 11 Oct 2017 18:13:22 +0530 Message-Id: <1507725802-44574-1-git-send-email-maninder1.s@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA0VSa0hTYRjm2zk7Oy1Xh1n4JSRyyErBtY1Nj6V2EzuUlNAvK5kH96GWO7Od zdIfXWAMSzNHNw3zRtkyw+WNmoqxULOLJEUW5ClrRkVBmHSTom1n0b/ned/ned+Hl5fE1HPy WLKEtyMbz5XShBLvv5u4JnmDWszTOt8YmMkBxDR2dRLMi5lHcqZuxqVgPO9eyZgnvkaCudvs wpkrU5MyRvzUJ2P845fAJiXb2dQJ2GtfktiWbgc76B4n2Hv1Czhb29sB2K/dcbmKPSi9GHFm ZItHfKHVXMIXZdA7dpu2mowpWl2yLo1JpeN5zoIy6Kyc3OTsktJgODq+nCt1BEu5nCDQ6zLT bVaHHcUXWwV7Br1Xp9NrdNpUjV6v1xiM+ev1xqCkABWfujMgK7sedbhxZF5xDLiVJ8EiElIG +OPBJfwkUJJqagDAfqdXIZE5AANNwzKJfAPwu3dS8c/i/O6KWIYAbL3yPmKZD6qm3PKQiqA0 sMM3iIfwMuoonGiqCY/CqDYAx1/dDhKSjKb2wJnmypAGpxLgcFcrEcIqahv8eb+XkLbFwfHR M/KQF1IeAk5PfAFSIwvOn+mLRIqGH8d6IzgWfjjtUkiGagDbHwRkEqkH0COKmKTaCF8/H1GE UmBUIuzyrZPKGdB57kI4NUYtgacWAuGgkFLBKpdakiRA5wuvXMIsFAd7IhM3w2GfP4zVVD6s EvuIOrDy4v8FLQB0gBWoTLAUIcFYpufRIY3AWQQHX6QptFq6QfjfkrbfAu0TOX5AkYCOUlFT L/PUcq5cqLD4ASQxepmK+D2dp1aZuYpKZLOabI5SJPiBMXhBNxa7vNAa/F7ebtIZ0rSGlJRU nVabZqBjVKO3HXlqqoizowMIlSHbP5+MXBR7DBxXvr3xsj3GkeBd9Xlxja+ywD3b/HTt3v4/ nz1kg7/iZkxhQ9SJERDTuj5xc0Dsmf3mceS4jlwdyx7imQVzVsvOubrlOH85sO/y9OT+x6vB rxPtRwfnlv45iJXntmWe7cw/v+vZ2acj1Xjqwy0FClvtPnFYTNfXzpI9rPlhr5BG40Ixp0vC bAL3F5EwwSiFAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrCLMWRmVeSWpSXmKPExsWy7bCSnK610L1Ig2//WSwu7k61mLN+DZvF zYdnWS0mPGxjt1jx7D6TxeVdc9gsDs9vY7FYev0ik8W9N1uZLA6dnMvowOWxZt4aRo+VH7Q8 Fmwq9dgz8SSbx4kZv1k8+rasYvT4vEkugD2KyyYlNSezLLVI3y6BK6P3wG6mgtU8FXOOfmFv YJzI1cXIySEhYCLR8r2NpYuRi0NIYDejxJrD05ghEtISP/+9Z4GwhSVW/nvODlH0iVHizeZm JpAEm4CexKpde8C6RQRaGSX+HHwB5jALLGOUmHF7MjtIlbBAhETrlvdgNouAqsT+9QvZQGxe AXeJn6e2sEGskJM4eWwy6wRGngWMDKsYJVMLinPTc4sNCwzzUsv1ihNzi0vz0vWS83M3MYLD TktzB+PlJfGHGAU4GJV4eAWu34kUYk0sK67MPcQowcGsJMLL9vdupBBvSmJlVWpRfnxRaU5q 8SFGaQ4WJXHep3nHIoUE0hNLUrNTUwtSi2CyTBycUg2MrEcLT089mrdeR/UJh7L5oy+8lqu7 bdM12Fy/LA//VL3i0dz3tx94Kh8wywpTOPK4gWOTkP4Hp+cuDS9rKqwWK1lJRr38JvLS5v2y 19Pm+D8uKLbb9mzVhSPM3J8Pv2EvuHdU6+v2FlZXH/4X0rxG2lPvrTQ6cdkg5GzHZaGz/ar/ n03u9dS4o8RSnJFoqMVcVJwIAOV/Q483AgAA X-CMS-MailID: 20171011124443epcas5p23a0d74a4628baa3a1b424cb363fc5c81 X-Msg-Generator: CA X-Sender-IP: 182.195.40.13 X-Local-Sender: =?UTF-8?B?TWFuaW5kZXIgU2luZ2gbU1JJLURlbGhpLVBsYXRmb3JtIFMv?= =?UTF-8?B?VyAxIFRlYW0b7IK87ISx7KCE7J6QG0xlYWQgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?TWFuaW5kZXIgU2luZ2gbU1JJLURlbGhpLVBsYXRmb3JtIFMv?= =?UTF-8?B?VyAxIFRlYW0bU2Ftc3VuZ8KgRWxlY3Ryb25pY3PCoBtMZWFkIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG1NXQUhRG0MxMElEMDJJRDAyODExNQ==?= Content-Type: text/plain; charset="utf-8" X-MTR: 20171011124443epcas5p23a0d74a4628baa3a1b424cb363fc5c81 CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20171011124443epcas5p23a0d74a4628baa3a1b424cb363fc5c81 X-RootMTR: 20171011124443epcas5p23a0d74a4628baa3a1b424cb363fc5c81 References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Issue observed on ARM. Whenever there is switch from user mode, we end up with invalid last entry with some user space address as below:- save_stack+0x40/0xec __set_page_owner+0x2c/0x64 .... .... __handle_domain_irq+0x9c/0x130 gic_handle_irq+0x40/0x80 __irq_usr+0x4c/0x60 0xb6507818 So in this case last entry is not valid, which leads to allocated one more new frame for stackdepot although having all above frames exactly same. (It increases depot_index drastically) So its better to ignore that last frame in case of switch. save_stack+0x40/0xec __set_page_owner+0x2c/0x64 .... .... __handle_domain_irq+0x9c/0x130 gic_handle_irq+0x40/0x80 __irq_usr+0x4c/0x60 Signed-off-by: Vaneet Narang Signed-off-by: Maninder Singh --- v1 -> v2: use generic API to check whether address belongs to user space or not. lib/stackdepot.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/stackdepot.c b/lib/stackdepot.c index f87d138..a045748 100644 --- a/lib/stackdepot.c +++ b/lib/stackdepot.c @@ -214,6 +214,13 @@ depot_stack_handle_t depot_save_stack(struct stack_trace *trace, if (unlikely(trace->nr_entries == 0)) goto fast_exit; + /* + * Ignore last entry if it belongs to user space + * in case of switch from user mode. + */ + if (!kernel_text_address(trace->entries[trace->nr_entries - 1])) + trace->nr_entries--; + hash = hash_stack(trace->entries, trace->nr_entries); bucket = &stack_table[hash & STACK_HASH_MASK]; -- 1.9.1