Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp23218ybp; Thu, 3 Oct 2019 09:38:32 -0700 (PDT) X-Google-Smtp-Source: APXvYqyFKqqy+Lul7YKS5oQTvsYcF5HkJ9TPe2+E1INhUNw8AxqL1EzLTWSCO2F/O4j2wWtqgcFf X-Received: by 2002:a17:906:4554:: with SMTP id s20mr8616458ejq.257.1570120712856; Thu, 03 Oct 2019 09:38:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570120712; cv=none; d=google.com; s=arc-20160816; b=CHA+goWQ2Bw8GMO3lvTPfuRA/HJTe1KSCVEH7j6RhKK3DGJazUYli/Yi/cMUoDacDt g4bfZvrTFXvczg5F01ZkxQdi2ad6s5g3NGLUwzueVZggKXABagQchMN7zqmC7r8ZKLZc 4LBqCp0Kh2Eb6an6mJ2HXP05CmjJ4IIGdt4NWCEIp/xR3BWB0kLj5ducsH4GqxbCDXiD zk/qyJMKfqWY5RxMVQx0ZWS8qImZ6u1vMAT6rziXR+4wR7cRM2ty35uDX6dLQOJVjBsL vKZ5DeFvgfchKt7tuWvDQbmYoq0bkfiWub2VoAEhbHe/ZkdOzmskAM8cFNjQSIbpgWFq xJHw== 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=B6AqbXEj0Kefl3P20d/drKxmNqASc7uLWXyr7JpeyYU=; b=pv7muBmHrRovYLAf/+BWW1oAPY0tM1POcy2PCGu4Z0tgxg3i/3rvQMzl77Khsur313 73l3RNqAgEb9AAMWYXFaG07lMGGsJt9SQ4ipSypsArRqmZ7o+jBZzs1cxoB7bOrPPrcc l/3tAJ/0ALVE4seHcXLYg0ZGDu8mWgdtKw6dvqbas73ON2qol7VaJYJ+Ll0ijxXRJoiz /rdJNFoX+2NfS9etK7ygz/RUD0/iuJs4SSI284vaIfT7MYoegBTV6XyO56YyOvjKJWHz +IaHnX8x036zHaQpL1KT7fJp1mQ/8DWKMly8dQGqNC3jZNL/7MWESPQE1zf5JWickZQe 3VZg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pmqUOIyK; 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 g30si1848837eda.2.2019.10.03.09.38.08; Thu, 03 Oct 2019 09:38:32 -0700 (PDT) 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=pmqUOIyK; 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 S2404184AbfJCQe2 (ORCPT + 99 others); Thu, 3 Oct 2019 12:34:28 -0400 Received: from mail.kernel.org ([198.145.29.99]:43006 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2404179AbfJCQe0 (ORCPT ); Thu, 3 Oct 2019 12:34:26 -0400 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 8BC8B20830; Thu, 3 Oct 2019 16:34:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570120465; bh=PCK4mgiAMepdmcjkI6hj/qWXpR57RcSqdMCI2dmyfCs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pmqUOIyKQrADFuDPfPzTTQS3ldaVIdt3ax6bgtpN/HXC7DGLgP2SjJu1P9PvwRNvd HPb/OCcHt2AhwLj0gkVg2rzOqE/HSbVhzXIh2GWAYD4fZBmLx/jlQ/vZHspCkdYzVp 4aVS5sMXQ1pNG77fuP4Du5h3Fb0ctNynJuibIEJ4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Qian Cai , Michael Ellerman , Madhavan Srinivasan , Jan Stancek Subject: [PATCH 5.2 231/313] powerpc/imc: Dont create debugfs files for cpu-less nodes Date: Thu, 3 Oct 2019 17:53:29 +0200 Message-Id: <20191003154555.735399024@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191003154533.590915454@linuxfoundation.org> References: <20191003154533.590915454@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: Madhavan Srinivasan commit 41ba17f20ea835c489e77bd54e2da73184e22060 upstream. Commit <684d984038aa> ('powerpc/powernv: Add debugfs interface for imc-mode and imc') added debugfs interface for the nest imc pmu devices to support changing of different ucode modes. Primarily adding this capability for debug. But when doing so, the code did not consider the case of cpu-less nodes. So when reading the _cmd_ or _mode_ file of a cpu-less node will create this crash. Faulting instruction address: 0xc0000000000d0d58 Oops: Kernel access of bad area, sig: 11 [#1] ... CPU: 67 PID: 5301 Comm: cat Not tainted 5.2.0-rc6-next-20190627+ #19 NIP: c0000000000d0d58 LR: c00000000049aa18 CTR:c0000000000d0d50 REGS: c00020194548f9e0 TRAP: 0300 Not tainted (5.2.0-rc6-next-20190627+) MSR: 9000000000009033 CR:28022822 XER: 00000000 CFAR: c00000000049aa14 DAR: 000000000003fc08 DSISR:40000000 IRQMASK: 0 ... NIP imc_mem_get+0x8/0x20 LR simple_attr_read+0x118/0x170 Call Trace: simple_attr_read+0x70/0x170 (unreliable) debugfs_attr_read+0x6c/0xb0 __vfs_read+0x3c/0x70 vfs_read+0xbc/0x1a0 ksys_read+0x7c/0x140 system_call+0x5c/0x70 Patch fixes the issue with a more robust check for vbase to NULL. Before patch, ls output for the debugfs imc directory # ls /sys/kernel/debug/powerpc/imc/ imc_cmd_0 imc_cmd_251 imc_cmd_253 imc_cmd_255 imc_mode_0 imc_mode_251 imc_mode_253 imc_mode_255 imc_cmd_250 imc_cmd_252 imc_cmd_254 imc_cmd_8 imc_mode_250 imc_mode_252 imc_mode_254 imc_mode_8 After patch, ls output for the debugfs imc directory # ls /sys/kernel/debug/powerpc/imc/ imc_cmd_0 imc_cmd_8 imc_mode_0 imc_mode_8 Actual bug here is that, we have two loops with potentially different loop counts. That is, in imc_get_mem_addr_nest(), loop count is obtained from the dt entries. But in case of export_imc_mode_and_cmd(), loop was based on for_each_nid() count. Patch fixes the loop count in latter based on the struct mem_info. Ideally it would be better to have array size in struct imc_pmu. Fixes: 684d984038aa ('powerpc/powernv: Add debugfs interface for imc-mode and imc') Reported-by: Qian Cai Suggested-by: Michael Ellerman Signed-off-by: Madhavan Srinivasan Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/20190827101635.6942-1-maddy@linux.vnet.ibm.com Cc: Jan Stancek Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/platforms/powernv/opal-imc.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) --- a/arch/powerpc/platforms/powernv/opal-imc.c +++ b/arch/powerpc/platforms/powernv/opal-imc.c @@ -53,9 +53,9 @@ static void export_imc_mode_and_cmd(stru struct imc_pmu *pmu_ptr) { static u64 loc, *imc_mode_addr, *imc_cmd_addr; - int chip = 0, nid; char mode[16], cmd[16]; u32 cb_offset; + struct imc_mem_info *ptr = pmu_ptr->mem_info; imc_debugfs_parent = debugfs_create_dir("imc", powerpc_debugfs_root); @@ -69,20 +69,20 @@ static void export_imc_mode_and_cmd(stru if (of_property_read_u32(node, "cb_offset", &cb_offset)) cb_offset = IMC_CNTL_BLK_OFFSET; - for_each_node(nid) { - loc = (u64)(pmu_ptr->mem_info[chip].vbase) + cb_offset; + while (ptr->vbase != NULL) { + loc = (u64)(ptr->vbase) + cb_offset; imc_mode_addr = (u64 *)(loc + IMC_CNTL_BLK_MODE_OFFSET); - sprintf(mode, "imc_mode_%d", nid); + sprintf(mode, "imc_mode_%d", (u32)(ptr->id)); if (!imc_debugfs_create_x64(mode, 0600, imc_debugfs_parent, imc_mode_addr)) goto err; imc_cmd_addr = (u64 *)(loc + IMC_CNTL_BLK_CMD_OFFSET); - sprintf(cmd, "imc_cmd_%d", nid); + sprintf(cmd, "imc_cmd_%d", (u32)(ptr->id)); if (!imc_debugfs_create_x64(cmd, 0600, imc_debugfs_parent, imc_cmd_addr)) goto err; - chip++; + ptr++; } return;