Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp691992pxx; Wed, 28 Oct 2020 14:39:47 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw8xJHA1fmf8tfXeZul4A67RMo1NRZkzq+nkZYupNohOy4RR3kYicv40r7rGVqqgK6nmfA8 X-Received: by 2002:a17:906:f0ce:: with SMTP id dk14mr1070867ejb.539.1603921187210; Wed, 28 Oct 2020 14:39:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603921187; cv=none; d=google.com; s=arc-20160816; b=yErla91v88sfnfnrp/+T5w589+6bBFvw6R3NQR1QDmdI1bSC82VlDsQaBN5Jpe0nSe JXSp10fRcGl72raUpNqa4nXOdN+H+GQxqtUfO/m1/8rqtEMxUAoKo9xCGeQg2w/J+rjs +YynV2djr26qYiZZcHE/yjBLkJKm/TMFhwPzzZYKmlcweBIAeRhDVODzRQWzxTdk/E2S ZD4ueCuy06OOORok/bsrZDXaqu6+Vh/7LhYNguLZ93cDJOXjPyNwKcAqfptUyD/gRAGf wJx3p2xB6eoMwn4gD13jx5jRQsR//kgT/mGn9d7e3db91YxJI94WnyB0svSkzT70+NLJ VSvg== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=0A0jb3QlGwF46rs1xd4mYasBp2r6Or/Ag9LkoTR7QfY=; b=F/d3VcIZQt+iLsg3/Mb9ecUYMKHbJSLsQqY8LxWMhCH+m/6r507nxlblgkSWFnpeb8 8IrNYJQh0jAojQEiwKjWNf4TTvMLtFJGpW1qO9dS/8013tUcUTPRrX9eL9pYWe391Jc1 uBVhJJ0jF+KXw/9JGxVHRxIo6Y7RX6H3TdY0PZAi1PZdzZ1cuiPudriIxZw53fETNAWD d8c4rrjt2jqm/YXPCQtyn8Hs7WXQguXoNWZfyKVk3EknsUNvWmQuE+D+z2l8v1BK4kyc 2zP2eD4ObqG+3exytjkMUBx3wsHJIY2N6lDaBLSDkVLzoMQLfqmV9wu5MXe+pHotonpO FnQw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@synopsys.com header.s=mail header.b=MKdrgiFj; 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=synopsys.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y9si512782ede.591.2020.10.28.14.39.25; Wed, 28 Oct 2020 14:39:47 -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=@synopsys.com header.s=mail header.b=MKdrgiFj; 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=synopsys.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1832418AbgJ0Wci (ORCPT + 99 others); Tue, 27 Oct 2020 18:32:38 -0400 Received: from smtprelay-out1.synopsys.com ([149.117.73.133]:49054 "EHLO smtprelay-out1.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2506391AbgJ0Wch (ORCPT ); Tue, 27 Oct 2020 18:32:37 -0400 Received: from mailhost.synopsys.com (sv2-mailhost1.synopsys.com [10.205.2.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 4885E40515; Tue, 27 Oct 2020 22:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1603837956; bh=Sja1KZoIneYVxxUnkZzOBZp8oo90HsWHX/KK4Q7CDf4=; h=From:To:Cc:Subject:Date:From; b=MKdrgiFjoU9OwyG2l+530lFHRM3Umm0ABuAwQgl9tEEPtagDWQ9s+O4a82hsVx3rL 9dVdUApGKD1nsShPqIPhAwUiYqUOBhQ9CuQbJ/a34yTW+EQJw9rZ4u4imaCbx6sD4z /Iy3IXb8eS+HGJTbm2Gr3tOPRID3m9JdvDpouPM91qMP/Tbom4CAfdh8WH207E0Gg6 9IdBvlWiTxHd6bk3Fezq2St1ECL+6im6goDAhimCK82tN77TFyBLmmNlQpHzlVXO/1 OsIjKq38EsdGdirY6KW3co3AleQUCUP5Di27h18KjEPhTLuYbUKj6VhXvlbitjEssY 0tyVSVuiFS8DQ== Received: from vineetg-Latitude-7400.internal.synopsys.com (unknown [10.13.183.89]) by mailhost.synopsys.com (Postfix) with ESMTP id 9DF40A0096; Tue, 27 Oct 2020 22:32:34 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Vineet Gupta To: linux-snps-arc@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Alexey.Brodkin@synopsys.com, Eugeniy.Paltsev@synopsys.com, Igor.Guryanov@synopsys.com, Vineet Gupta Subject: [PATCH] ARC: stack unwinding: avoid indefinite looping Date: Tue, 27 Oct 2020 15:32:33 -0700 Message-Id: <20201027223233.3199386-1-vgupta@synopsys.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently stack unwinder is a while(1) loop which relies on the dwarf unwinder to signal termination, which in turn relies on dwarf info to do so. This in theory could cause an infinite loop if the dwarf info was somehow messed up or the register contents were etc. This fix thus detects the excessive looping and breaks the loop. Signed-off-by: Vineet Gupta --- arch/arc/kernel/stacktrace.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/arc/kernel/stacktrace.c b/arch/arc/kernel/stacktrace.c index bf40e06f3fb8..0fed32b95923 100644 --- a/arch/arc/kernel/stacktrace.c +++ b/arch/arc/kernel/stacktrace.c @@ -115,7 +115,7 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs, int (*consumer_fn) (unsigned int, void *), void *arg) { #ifdef CONFIG_ARC_DW2_UNWIND - int ret = 0; + int ret = 0, cnt = 0; unsigned int address; struct unwind_frame_info frame_info; @@ -135,6 +135,11 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs, break; frame_info.regs.r63 = frame_info.regs.r31; + + if (cnt++ > 128) { + printk("unwinder looping too long, aborting !\n"); + return 0; + } } return address; /* return the last address it saw */ -- 2.25.1