From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 253BB3FF1DD; Fri, 15 May 2026 15:52:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778860346; cv=none; b=WUM4HGbNUbk9semGn2/A8rugIfRitq7vIaLwmS6qPme4ykm4fXLNBJARgm7ti8Fh5fxWsbF3P5m8B4KrH69N8ifr9bwIcTm9abu1qj5VL600eUAPmM+r2dPz2zYTxmuKnTEk0lAgMXLM/+l3qgsFlKUInCnuAuecDY02SmSLMMo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778860346; c=relaxed/simple; bh=3j7xA8ofcQZJZ4k7e5f+/PpOtE9wSlGs4cnCxa2aKlU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BMGKPupkmvv7NN40+Rqqnqi+ZUp6pS843E+YSNycUEy9nG8Kr5/wN2c/65uGKrZrUzWe/ozCJKmbqCHF51730esdJXvEEV0qGqbk6QL1jf4jixWl3Hhvz2G7kjVpisv9uBDAzeVLZ7U+zAFTCMTGmc9ZzDSQftXoxpfxTvZ4tTE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=bE3oOmkl; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="bE3oOmkl" Received: by smtp.kernel.org (Postfix) with ESMTPSA id A8853C2BCB3; Fri, 15 May 2026 15:52:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1778860346; bh=3j7xA8ofcQZJZ4k7e5f+/PpOtE9wSlGs4cnCxa2aKlU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bE3oOmklVlyOw1MAkHTsyPRUG9APU1eSGtSA5X2C1DH3hPm09KuKJVJs2VFOJZuBM q9Gjlj3uVN0NFdiwpCImhwgVqvRu8pR2HsPvZ1ssJm09Lvs0xrMLYiu9dtX3ZEjBL0 fU6E9FdpfzuMw4tIQgskNdZ09WZhJ765K7smYLHY= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Lanqing Liu , Johan Hovold , Mark Brown Subject: [PATCH 6.12 052/144] spi: sprd: fix controller deregistration Date: Fri, 15 May 2026 17:47:58 +0200 Message-ID: <20260515154654.749184182@linuxfoundation.org> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260515154653.469907118@linuxfoundation.org> References: <20260515154653.469907118@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.12-stable review patch. If anyone has any objections, please let me know. ------------------ From: Johan Hovold commit 123d17dbc5f07059752fa5e616385ca29a8f935a upstream. Make sure to deregister the controller before disabling underlying resources like clocks during driver unbind. Note that the controller is suspended before disabling and releasing resources since commit de082d866cce ("spi: sprd: Add the SPI irq function for the SPI DMA mode") which avoids issues like unclocked accesses but prevents SPI device drivers from doing I/O during deregistration. Fixes: e7d973a31c24 ("spi: sprd: Add SPI driver for Spreadtrum SC9860") Cc: stable@vger.kernel.org # 4.20 Cc: Lanqing Liu Signed-off-by: Johan Hovold Link: https://patch.msgid.link/20260410081757.503099-17-johan@kernel.org Signed-off-by: Mark Brown Signed-off-by: Greg Kroah-Hartman --- drivers/spi/spi-sprd.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) --- a/drivers/spi/spi-sprd.c +++ b/drivers/spi/spi-sprd.c @@ -978,7 +978,7 @@ static int sprd_spi_probe(struct platfor goto err_rpm_put; } - ret = devm_spi_register_controller(&pdev->dev, sctlr); + ret = spi_register_controller(sctlr); if (ret) goto err_rpm_put; @@ -1010,7 +1010,9 @@ static void sprd_spi_remove(struct platf if (ret < 0) dev_err(ss->dev, "failed to resume SPI controller\n"); - spi_controller_suspend(sctlr); + spi_controller_get(sctlr); + + spi_unregister_controller(sctlr); if (ret >= 0) { if (ss->dma.enable) @@ -1019,6 +1021,8 @@ static void sprd_spi_remove(struct platf } pm_runtime_put_noidle(&pdev->dev); pm_runtime_disable(&pdev->dev); + + spi_controller_put(sctlr); } static int __maybe_unused sprd_spi_runtime_suspend(struct device *dev)