Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp416175pxb; Wed, 3 Mar 2021 06:35:09 -0800 (PST) X-Google-Smtp-Source: ABdhPJzpy2uiCGGNRBinP/WhveBk9ih7GJro4EeK4cnAnls6jgEzUOivulIxsx4fGkY5IiF5yrfr X-Received: by 2002:a17:906:6487:: with SMTP id e7mr26008674ejm.181.1614782108847; Wed, 03 Mar 2021 06:35:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614782108; cv=none; d=google.com; s=arc-20160816; b=m9+93ww1FRfLdeL/Iqe+fuw6zqiL5f8S4tUPU/X2oT/TtwkzNQn97FM+R5xwrzIXkz fhchsgoRDkey7w5XkRl4VCZQSwjH+B2+RKC2QPJRiaUG0LAwxXWCyVuoK+6mSc/1Z8cY slmCPhiITvN90xyxxjtwpw4tXgI765Paapic/512fG/Q0KAoFraeIRGeX8ZeEOt1Hwzo UCSad8jwCYcqn2QVq+6OAJSf9S7fNjL0srINKaHcF263L7G8FCzxl5ah/df1NI7CmhC0 ye9OakeVZrgGFxvCbUIdmtyo4pbi7W5RDm/j2/l9AHASiZRdOH5eQ2NEhIMPoun06kNI W5sQ== 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=kCgkiIZWEWrJO1dOC9k3p0NNGJ/rG/UsYoT+0J38xZ8=; b=E9bQEpYhFySr0Z1CQLw6lNV6a32j0m67JGKr/cx9G22BqJ2kzB1Gw8bY7kW5hErbC0 3HbLG7i5wnKilPqpDrYOJlpoTsg/fTSwFnYoqc39qGLj2acXbv7QC0yePWRl/xQKU8cq S7D0/r6rGtOQbfLQ8kTPL2gIzp+yPRsA8tywwgKatRW/K3wX26uGayUXahfXyKWXTLlr LzkO3YnKBPFHAXwfkfkP95QU/00FfFNdbCTloRoDMdpfKWJPF3mgVU2bvzwIomZ60D6Y k4JbmT6UsHr+IWwHHQKQ6KgeJxncWz2xBjsv2wY0dfXv6kDpUGg4mfghYIXcnnbTTYgr TZ+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Lw8jv0LX; 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 v25si14925184ejw.423.2021.03.03.06.34.00; Wed, 03 Mar 2021 06:35:08 -0800 (PST) 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=Lw8jv0LX; 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 S244232AbhCAVnR (ORCPT + 99 others); Mon, 1 Mar 2021 16:43:17 -0500 Received: from mail.kernel.org ([198.145.29.99]:37352 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237001AbhCARSx (ORCPT ); Mon, 1 Mar 2021 12:18:53 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 2D2B864F94; Mon, 1 Mar 2021 16:47:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1614617236; bh=Kl2srq+s1fv7dBcZVtxYhNEQhHnpnNFfLFRL2ZF2LOo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Lw8jv0LXEDPQjosDhKjtv5Ynfli/GJqd+OClLosFB/nSVFSKxy32Orn3m9feueIbd Favj249NN+4sdbK4Vu8cBieAE70mrMnH9w+UckQA8FvjKKkkbi1oBGsc8XR0wpFGEh A6YgLaM/JirZS7bZlFUreT2LCxEIHr6dKrd8n3S4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Frank Li , Ulf Hansson Subject: [PATCH 4.19 225/247] mmc: sdhci-esdhc-imx: fix kernel panic when remove module Date: Mon, 1 Mar 2021 17:14:05 +0100 Message-Id: <20210301161042.703910180@linuxfoundation.org> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210301161031.684018251@linuxfoundation.org> References: <20210301161031.684018251@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: Frank Li commit a56f44138a2c57047f1ea94ea121af31c595132b upstream. In sdhci_esdhc_imx_remove() the SDHCI_INT_STATUS in read. Under some circumstances, this may be done while the device is runtime suspended, triggering the below splat. Fix the problem by adding a pm_runtime_get_sync(), before reading the register, which will turn on clocks etc making the device accessible again. [ 1811.323148] mmc1: card aaaa removed [ 1811.347483] Internal error: synchronous external abort: 96000210 [#1] PREEMPT SMP [ 1811.354988] Modules linked in: sdhci_esdhc_imx(-) sdhci_pltfm sdhci cqhci mmc_block mmc_core [last unloaded: mmc_core] [ 1811.365726] CPU: 0 PID: 3464 Comm: rmmod Not tainted 5.10.1-sd-99871-g53835a2e8186 #5 [ 1811.373559] Hardware name: Freescale i.MX8DXL EVK (DT) [ 1811.378705] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--) [ 1811.384723] pc : sdhci_esdhc_imx_remove+0x28/0x15c [sdhci_esdhc_imx] [ 1811.391090] lr : platform_drv_remove+0x2c/0x50 [ 1811.395536] sp : ffff800012c7bcb0 [ 1811.398855] x29: ffff800012c7bcb0 x28: ffff00002c72b900 [ 1811.404181] x27: 0000000000000000 x26: 0000000000000000 [ 1811.409497] x25: 0000000000000000 x24: 0000000000000000 [ 1811.414814] x23: ffff0000042b3890 x22: ffff800009127120 [ 1811.420131] x21: ffff00002c4c9580 x20: ffff0000042d0810 [ 1811.425456] x19: ffff0000042d0800 x18: 0000000000000020 [ 1811.430773] x17: 0000000000000000 x16: 0000000000000000 [ 1811.436089] x15: 0000000000000004 x14: ffff000004019c10 [ 1811.441406] x13: 0000000000000000 x12: 0000000000000020 [ 1811.446723] x11: 0101010101010101 x10: 7f7f7f7f7f7f7f7f [ 1811.452040] x9 : fefefeff6364626d x8 : 7f7f7f7f7f7f7f7f [ 1811.457356] x7 : 78725e6473607372 x6 : 0000000080808080 [ 1811.462673] x5 : 0000000000000000 x4 : 0000000000000000 [ 1811.467990] x3 : ffff800011ac1cb0 x2 : 0000000000000000 [ 1811.473307] x1 : ffff8000091214d4 x0 : ffff8000133a0030 [ 1811.478624] Call trace: [ 1811.481081] sdhci_esdhc_imx_remove+0x28/0x15c [sdhci_esdhc_imx] [ 1811.487098] platform_drv_remove+0x2c/0x50 [ 1811.491198] __device_release_driver+0x188/0x230 [ 1811.495818] driver_detach+0xc0/0x14c [ 1811.499487] bus_remove_driver+0x5c/0xb0 [ 1811.503413] driver_unregister+0x30/0x60 [ 1811.507341] platform_driver_unregister+0x14/0x20 [ 1811.512048] sdhci_esdhc_imx_driver_exit+0x1c/0x3a8 [sdhci_esdhc_imx] [ 1811.518495] __arm64_sys_delete_module+0x19c/0x230 [ 1811.523291] el0_svc_common.constprop.0+0x78/0x1a0 [ 1811.528086] do_el0_svc+0x24/0x90 [ 1811.531405] el0_svc+0x14/0x20 [ 1811.534461] el0_sync_handler+0x1a4/0x1b0 [ 1811.538474] el0_sync+0x174/0x180 [ 1811.541801] Code: a9025bf5 f9403e95 f9400ea0 9100c000 (b9400000) [ 1811.547902] ---[ end trace 3fb1a3bd48ff7be5 ]--- Signed-off-by: Frank Li Cc: stable@vger.kernel.org # v4.0+ Link: https://lore.kernel.org/r/20210210181933.29263-1-Frank.Li@nxp.com [Ulf: Clarified the commit message a bit] Signed-off-by: Ulf Hansson Signed-off-by: Greg Kroah-Hartman --- drivers/mmc/host/sdhci-esdhc-imx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/drivers/mmc/host/sdhci-esdhc-imx.c +++ b/drivers/mmc/host/sdhci-esdhc-imx.c @@ -1370,9 +1370,10 @@ static int sdhci_esdhc_imx_remove(struct struct sdhci_host *host = platform_get_drvdata(pdev); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct pltfm_imx_data *imx_data = sdhci_pltfm_priv(pltfm_host); - int dead = (readl(host->ioaddr + SDHCI_INT_STATUS) == 0xffffffff); + int dead; pm_runtime_get_sync(&pdev->dev); + dead = (readl(host->ioaddr + SDHCI_INT_STATUS) == 0xffffffff); pm_runtime_disable(&pdev->dev); pm_runtime_put_noidle(&pdev->dev);