Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp336275pxb; Mon, 16 Aug 2021 06:35:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwyz0LDF0e7FGWXuhXn8hGP2XXFmSYrKF1G/aOghlpl9W3v2FX2my20kKP8Ghvb3nFQXa/8 X-Received: by 2002:a05:6602:24d9:: with SMTP id h25mr12973694ioe.11.1629120952609; Mon, 16 Aug 2021 06:35:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629120952; cv=none; d=google.com; s=arc-20160816; b=RZ8qg6QEG2f5MB1PuWLIm1lrxjbZHvupzDMg9TQptzCZw2nA/BQlKlb1JNzTFK6ls1 0R44l/R5s/3R97bvdWikyQFZ2bTc2BPbxO21uCB3hEteKH8ko6Jvs/Sbid760FMs4qqu eD63axe5PDL6usnXlUkJsDvqo27zNSW6AM0f9s76sOdENtqAg1LJbv7visH6G97lf50z uQP3slvVPFhq6Wl38Uo6Lki0fa9DSi3Z0FlzqO+0/X9Avo1IPrjv3tNKeDLQEYySGFeL z9znXVZ50bXp/XQror3NxM31YN5oLf1HJ57o9Ic2MMs0T3ovjJye36bUeCkzIj1qzW3h PYLQ== 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=v+dmHhBfIqCz6jmXNZhzQ1gBAscOp9chJeQvvaKZOQk=; b=BJKngn42Sn1khl6gfsHN24PDjk1mfmzpppvlPVVR1Elu/4x5yTEicolKdzhBDK6TcO NOB/GqemEywDgAWr5qVMc5A1RtY9dHzANaLFhPHHMVzDBULUO1XumoNE26ylaBfNa2nk A97W3d2M3q9fgA9TsI5HAFbUd+wSK/L+pnnakpL0qKVECWND7SVcUKwcCudk8OuUjFJD 4DNkg7IAYxs4fTL9wJP2hYbeqo3EIpnheEJgSpLcgusl6xUvcF6PpLNvUyvhh1uU4EzO Ut9SdAgoPY4thXM0K76aw2VQRXwe39cmilV6lFEqbsm7DFQR3y0IiVliZ+q617hyxClz 1RzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=vrVPC9xr; 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=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p35si11864487jal.123.2021.08.16.06.35.39; Mon, 16 Aug 2021 06:35:52 -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=@linuxfoundation.org header.s=korg header.b=vrVPC9xr; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239520AbhHPNcG (ORCPT + 99 others); Mon, 16 Aug 2021 09:32:06 -0400 Received: from mail.kernel.org ([198.145.29.99]:44230 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240922AbhHPNUY (ORCPT ); Mon, 16 Aug 2021 09:20:24 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 581A763307; Mon, 16 Aug 2021 13:15:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1629119726; bh=cmouDnjztEyz9OYzaUb+gAvvGR/ElZXxMDAvkLgME+c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=vrVPC9xrZs8kRXA/B95ihncVS+uYtNgtgVzJv2q2+CJeN29wX/WQj1KSCW7Ylqdfw FOvSw5+4v7cXmN89Dtoc8A7A8GPprP3KJBihYArlCxkbNQnv1U+jBRLzcwhThKKsqe xfYk4YeZFyGcccCgwGlSeYrdYFDHaY+GRRxJiPwc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Christophe Leroy , Michael Ellerman Subject: [PATCH 5.13 139/151] powerpc/smp: Fix OOPS in topology_init() Date: Mon, 16 Aug 2021 15:02:49 +0200 Message-Id: <20210816125448.641034465@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210816125444.082226187@linuxfoundation.org> References: <20210816125444.082226187@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: Christophe Leroy commit 8241461536f21bbe51308a6916d1c9fb2e6b75a7 upstream. Running an SMP kernel on an UP platform not prepared for it, I encountered the following OOPS: BUG: Kernel NULL pointer dereference on read at 0x00000034 Faulting instruction address: 0xc0a04110 Oops: Kernel access of bad area, sig: 11 [#1] BE PAGE_SIZE=4K SMP NR_CPUS=2 CMPCPRO Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.13.0-pmac-00001-g230fedfaad21 #5234 NIP: c0a04110 LR: c0a040d8 CTR: c0a04084 REGS: e100dda0 TRAP: 0300 Not tainted (5.13.0-pmac-00001-g230fedfaad21) MSR: 00009032 CR: 84000284 XER: 00000000 DAR: 00000034 DSISR: 20000000 GPR00: c0006bd4 e100de60 c1033320 00000000 00000000 c0942274 00000000 00000000 GPR08: 00000000 00000000 00000001 00000063 00000007 00000000 c0006f30 00000000 GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000005 GPR24: c0c67d74 c0c67f1c c0c60000 c0c67d70 c0c0c558 1efdf000 c0c00020 00000000 NIP [c0a04110] topology_init+0x8c/0x138 LR [c0a040d8] topology_init+0x54/0x138 Call Trace: [e100de60] [80808080] 0x80808080 (unreliable) [e100de90] [c0006bd4] do_one_initcall+0x48/0x1bc [e100def0] [c0a0150c] kernel_init_freeable+0x1c8/0x278 [e100df20] [c0006f44] kernel_init+0x14/0x10c [e100df30] [c00190fc] ret_from_kernel_thread+0x14/0x1c Instruction dump: 7c692e70 7d290194 7c035040 7c7f1b78 5529103a 546706fe 5468103a 39400001 7c641b78 40800054 80c690b4 7fb9402e <81060034> 7fbeea14 2c080000 7fa3eb78 ---[ end trace b246ffbc6bbbb6fb ]--- Fix it by checking smp_ops before using it, as already done in several other places in the arch/powerpc/kernel/smp.c Fixes: 39f87561454d ("powerpc/smp: Move ppc_md.cpu_die() to smp_ops.cpu_offline_self()") Cc: stable@vger.kernel.org Signed-off-by: Christophe Leroy Signed-off-by: Michael Ellerman Link: https://lore.kernel.org/r/75287841cbb8740edd44880fe60be66d489160d9.1628097995.git.christophe.leroy@csgroup.eu Signed-off-by: Greg Kroah-Hartman --- arch/powerpc/kernel/sysfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/arch/powerpc/kernel/sysfs.c +++ b/arch/powerpc/kernel/sysfs.c @@ -1167,7 +1167,7 @@ static int __init topology_init(void) * CPU. For instance, the boot cpu might never be valid * for hotplugging. */ - if (smp_ops->cpu_offline_self) + if (smp_ops && smp_ops->cpu_offline_self) c->hotpluggable = 1; #endif