From patchwork Thu Apr 10 06:56:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kevin Hao X-Patchwork-Id: 880515 Received: from mail-qk1-f178.google.com (mail-qk1-f178.google.com [209.85.222.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E73A7204695; Thu, 10 Apr 2025 06:56:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744268201; cv=none; b=bvAdUxqCTlMehUjt6LpHegK/DWsKBeasRRcUHlM0TihddD7nZnbxPDYc2qS20udXgZEULwZ580hw4a5fHL7Odsx33/DQ+/tT59nHXLGkTC1bWrI41DZhsOO+Ph+7kTI1OerGR6c4Aq7zRIcdFrWlLU/jx3iPMMTdCyII+XyIgKE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744268201; c=relaxed/simple; bh=2exhL89MqmM920DtFt+LW9tQ8zlgpzvyNF6wZM1vlN8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KgsgidHqjtQPQJNcLO/JMZx2HTd6Gd4lCaNPAsU/S2bRPModqUxHvwRFGH6xUfxXAB8zgaW8bD+fF16yDx8bmtLHXzcksPOqE8u4c5tqQB6qeJDoQ8AAVecoZVrbZpwmb/4jtT5AcYWAoJwaskwOUC5/GQolavYi9VeVMSkVLLo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jHEtjeS2; arc=none smtp.client-ip=209.85.222.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jHEtjeS2" Received: by mail-qk1-f178.google.com with SMTP id af79cd13be357-7c560c55bc1so52826985a.1; Wed, 09 Apr 2025 23:56:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744268198; x=1744872998; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=9+/a0pAy49kNjJeFKeUGOEY733n8BvKpFhFfUlVsDvE=; b=jHEtjeS2AesoldNlR9XyvhFfZh9FoDhfw1ImndUTV+0RpjRi0/rQL9Anc0bKU/89Cm V3uOxnQm3k5Vn/w3hy25wKhxD91nU1PYC/agTvq8hQl3DK9JEruNuPii2C8ioyTFz5la j3bgaNahKstxXWABn+/YH+eveXDBAWQRHnvStE8sUZW7W2UrZfZBrYqpKrBAxXa0sAjO cmb7BPXTS9+3bZyXULdXPHN92K9UUdjLlX94ns2vHURCd3FbS6Q4EHjIo9zFf+5cjl9F iB/Zvl+W1BKs9YRNusSvR3jqOWuJIEIv0cNVrvy1hpwzGKx/D+Dgslxtr3NJkt+tdZwT 2xzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744268198; x=1744872998; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9+/a0pAy49kNjJeFKeUGOEY733n8BvKpFhFfUlVsDvE=; b=oruVL+mmZo2ZJN2rbCRzZ1/RwdeXHHDlWiHMXnmwwILEIZbgZO6uySyZlW34f6B++z 5NlQUhtDwlOaouJVUcz/5RvrJUIzaX5h7ndPom2HJQ5gAqAnATiV5dQe5akU9Ijf3t3F ynKoyXys6MH7yglTB6pdd+LzVNsoSEN17bDi8A0R1aCzLWz78aIgxwMQ6iW6SsFiiGJl eeki44NYTsy/gvG73MHyBeBuHoCbnMWRRsKL1FBH4CQpuG4EA46BKf9leeaXuVniH0rk 4YcUfwKdOcVEJYdSVXj2bpAqo8+DXOLijFGNGVyGpq5tmvKuEaA9CVSWR61hS3WNVMrT fEwg== X-Forwarded-Encrypted: i=1; AJvYcCUK/dnuhZlTUnbc8ed9PrsqpaFsmmkEnCakPLvjTHzjxo4aSh2NJLcL6o6VGr76e5bBcAPGpQo=@vger.kernel.org X-Gm-Message-State: AOJu0YwUQ7lUd3LQw9L0O5EjOcecBr7i7sj1lllTYSWM1YbD5zFKxuyK wWqAGllsEMv1Gm1fs3SoFgNVemcDPh6aRMtj6c8MkcuQxRNDQAe6OmKF/NcD X-Gm-Gg: ASbGncsQbU8f6ks2DflqYV74YTUdeeRpQWhnlLwNWwSldNbUl4fYyTebJny+zVBGof7 PoRRLkWxREQF4Dvo/4g1cCW0C1PcoNXfryhbBYRES26y51iNGMjfvO+w2grwjk704LgNO7i/JYw 4ZT9JTCgPbuYX95Ds6LixHzthpTPZ/V1qJYuYQfZMgdUeT93h1Q6DdNnK1XclH+rYh0hMlAME8m amDUbiOkzAL7w4dnBqa9JKp+yDrUjIZr+/ftFa6XbrOVye/6TkgAGMD/L5E3i0NpAMPzEzvdaCN 8JWym19kX8IitY25glKKiBAeqAd/qYu3n8e3YH9kCfi7oqNmJVY= X-Google-Smtp-Source: AGHT+IF6b6LGSAR4bHA1yLJXiYlJx62ZHYX+xSEbpgOYOLW5RvtQmIEVa/c8wIWrL/FXunsXjsemwg== X-Received: by 2002:a05:620a:4550:b0:7c7:a543:d878 with SMTP id af79cd13be357-7c7a7654195mr189133985a.12.1744268198407; Wed, 09 Apr 2025 23:56:38 -0700 (PDT) Received: from localhost.localdomain ([128.224.253.2]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c7a89515e4sm46547285a.26.2025.04.09.23.56.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 23:56:38 -0700 (PDT) From: Kevin Hao Date: Thu, 10 Apr 2025 14:56:09 +0800 Subject: [PATCH 1/3] spi: fsl-qspi: Fix double cleanup in probe error path Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250410-spi-v1-1-56e867cc19cf@gmail.com> References: <20250410-spi-v1-0-56e867cc19cf@gmail.com> In-Reply-To: <20250410-spi-v1-0-56e867cc19cf@gmail.com> To: linux-spi@vger.kernel.org Cc: Han Xu , Mark Brown , imx@lists.linux.dev, stable@vger.kernel.org X-Mailer: b4 0.14.2 Commit 40369bfe717e ("spi: fsl-qspi: use devm function instead of driver remove") introduced managed cleanup via fsl_qspi_cleanup(), but incorrectly retain manual cleanup in two scenarios: - On devm_add_action_or_reset() failure, the function automatically call fsl_qspi_cleanup(). However, the current code still jumps to err_destroy_mutex, repeating cleanup. - After the fsl_qspi_cleanup() action is added successfully, there is no need to manually perform the cleanup in the subsequent error path. However, the current code still jumps to err_destroy_mutex on spi controller failure, repeating cleanup. Skip redundant manual cleanup calls to fix these issues. Cc: stable@vger.kernel.org Fixes: 40369bfe717e ("spi: fsl-qspi: use devm function instead of driver remove") Signed-off-by: Kevin Hao --- drivers/spi/spi-fsl-qspi.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/spi/spi-fsl-qspi.c b/drivers/spi/spi-fsl-qspi.c index 5c59fddb32c1b9cc030e7abb49484662ec7b382c..2f54dc09d11b1c56cfe57ceec8452fbb29322d3f 100644 --- a/drivers/spi/spi-fsl-qspi.c +++ b/drivers/spi/spi-fsl-qspi.c @@ -949,17 +949,14 @@ static int fsl_qspi_probe(struct platform_device *pdev) ret = devm_add_action_or_reset(dev, fsl_qspi_cleanup, q); if (ret) - goto err_destroy_mutex; + goto err_put_ctrl; ret = devm_spi_register_controller(dev, ctlr); if (ret) - goto err_destroy_mutex; + goto err_put_ctrl; return 0; -err_destroy_mutex: - mutex_destroy(&q->lock); - err_disable_clk: fsl_qspi_clk_disable_unprep(q); From patchwork Thu Apr 10 06:56:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kevin Hao X-Patchwork-Id: 880105 Received: from mail-qk1-f173.google.com (mail-qk1-f173.google.com [209.85.222.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C8CEC20487F for ; Thu, 10 Apr 2025 06:56:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744268203; cv=none; b=p5h9aQWNTVAxSkXnGJ33YQZOt11SIAj0dven2g+x7Uq37v8gbmKKsIPhCDLcHcSPnCVvwd7wfsX3/6VqKcAuSlV8A+sWrPzTtavGKcDIvEpx6mTxKkB80YmYRU6pSy0gFaGqg8Xkg9s2GDPU1uvJ3SDpvs9d4CwzzrUlUZHKjC0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744268203; c=relaxed/simple; bh=YNMWPXST4GmkU82cqtCWweSG8CvPoxSqJXedn/pDLfY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mGVl6JqIw8b6kNuXeyw3Zm23/2Mz6v2OgbsxwairDOu9TXkbLr2kqdwuDx6h3eDzhqGJWpbLd90I/CDEh5gou6LymOl98HKezdIuZu+SPgX6B6jikrj+EJhijDPWVISup+rlL4aepbP9QwaFQG11a984B3nPTWAUjdoPpEsClqE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=emXCgN8k; arc=none smtp.client-ip=209.85.222.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="emXCgN8k" Received: by mail-qk1-f173.google.com with SMTP id af79cd13be357-7c559b3eb0bso23698785a.1 for ; Wed, 09 Apr 2025 23:56:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744268201; x=1744873001; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=qQNsJ3ZOiZBcYiwdRb4mVkjkRmdE4On94lqt+0SKelw=; b=emXCgN8kQMiWqNJZzV/NAMyCy/5Xwr1lEpgGsZ0DDppJUTAy908jP/l5ermTHPHO8o TclTg2b7ijvfqHg7A87UWdjGlHIUzsprljAg+ck4oWQhC+VaWtQcwbHyKlm3IhGPwBuP efwxOJos3Rqzxrs4F98AgundPnHBfdX8tDkX5lEED3ilDPRLHJ7p/zS9ybjIE+LD/YLk eP89HaHTw3iUyFPdp7RdAZj9YREAcFZ9SWe7Lxt45EzaiwUNZfrGTQAkrp9bsYp7xZJe HzgQLBopKCeFLTd0daCY9W5cFQ/VA3pimbz+4M/RnFUjZNbbH9TYRLz/X1FjIiaNn4fO Tdfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744268201; x=1744873001; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qQNsJ3ZOiZBcYiwdRb4mVkjkRmdE4On94lqt+0SKelw=; b=KVBOOSAJW4NhRbBRXTsvqel7Nf++M1GMi3dOmW0aaZXkjKg6tJzH4SwLM4sx8pTt0E FtENk90CjBSZT5ELXZEhTQQxcr4B2nEeim5AcKxfpMdgVwRZPxgne0gRfn32wyUVXazK 8LZV/xfYeF92IZ2DGHdIno5+ePjrCEIKy3YeSTaix6BT0ns6xyf98xBS+IA9CzCqfP7X 74s1Ox+VuuZQLJOrzqvY1kX9tdUKAIOs5nor2nV52G+qz/22aSysqVnYPt9stsXIiRnw KreXddrbkuFyNaK8T8OY1gYPHhvcqif9CFQOh3Pf75kgCHWpMabEOs/ffTRSfv4EWaYc VkJg== X-Gm-Message-State: AOJu0YycaKgQzRC1jV+QXBXdKx/0M0teLItcb/3qLb+XibSeZWcgo9X3 /5SadFqR2h/pntu93jXBopTEqpNAJ46zxaiwfjK94CVdwH11WRnm X-Gm-Gg: ASbGnctzEtooYanCMWPCcnbFMFzjG0PJ/cB+78KwezXQHg+8EiuY/rIdKsRuHleXiwF a8sPZxuMoTgr9UIgz2KAPSGYZAvrM38Mrbzf1vppD8oiayTv1CJUfhowN4NYFrcMb0/NF5bfdN4 U5MoH84Fjcdin3zCttQ811Wvvw3qGBA+2e7T26YIwAfNptCT+/1KBTwRcfxsH8ujXBUf5NhbSm7 ssPcSYa9YMiv5YLhDtlTNr87gEAbTARCiqnrusrg+RjTbr/eWRJye5DnSpWekV2gi49icIqLBxS WxmJLMUS6W3ckLDT54L6guazVus/W0lql9o+y5nmqzwrmoy7nl4= X-Google-Smtp-Source: AGHT+IH8Rh4oQxmbv52IflL2wfwTmNN62cTX1Kblk1rng58eaLwD7Uk6UckMElDU3x7WC4HYPwlgCg== X-Received: by 2002:a05:620a:178c:b0:7c5:464b:6718 with SMTP id af79cd13be357-7c7a81c077fmr192043285a.54.1744268200969; Wed, 09 Apr 2025 23:56:40 -0700 (PDT) Received: from localhost.localdomain ([128.224.253.2]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c7a89515e4sm46547285a.26.2025.04.09.23.56.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 23:56:40 -0700 (PDT) From: Kevin Hao Date: Thu, 10 Apr 2025 14:56:10 +0800 Subject: [PATCH 2/3] spi: fsl-spi: Remove redundant probe error message Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250410-spi-v1-2-56e867cc19cf@gmail.com> References: <20250410-spi-v1-0-56e867cc19cf@gmail.com> In-Reply-To: <20250410-spi-v1-0-56e867cc19cf@gmail.com> To: linux-spi@vger.kernel.org Cc: Han Xu , Mark Brown , imx@lists.linux.dev X-Mailer: b4 0.14.2 An error message is already emitted by the driver core function call_driver_probe() when the driver probe fails. Therefore, this redundant probe error message is removed. Signed-off-by: Kevin Hao --- drivers/spi/spi-fsl-qspi.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/spi/spi-fsl-qspi.c b/drivers/spi/spi-fsl-qspi.c index 2f54dc09d11b1c56cfe57ceec8452fbb29322d3f..b5ecffcaf7955e2ec9bb3e2857f8bc14d73a2f90 100644 --- a/drivers/spi/spi-fsl-qspi.c +++ b/drivers/spi/spi-fsl-qspi.c @@ -963,7 +963,6 @@ static int fsl_qspi_probe(struct platform_device *pdev) err_put_ctrl: spi_controller_put(ctlr); - dev_err(dev, "Freescale QuadSPI probe failed\n"); return ret; } From patchwork Thu Apr 10 06:56:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kevin Hao X-Patchwork-Id: 880514 Received: from mail-qk1-f175.google.com (mail-qk1-f175.google.com [209.85.222.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 803BC204844 for ; Thu, 10 Apr 2025 06:56:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744268208; cv=none; b=BniznhWAKkWhbAOQCfyuILIpAMFEYet7riW3P67C0tbS3GrZW4+SeOutD3g6If7eObBCQJbcXOjU5pUyeTLCg41sL4/CWzbrCNgvD0sNCnrsg7G/zlyHUd2U8tRC5pC4/e3rdF/JlOpCccc1+uTOO3aGr8JZrW1M5IzwjYH55Uw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744268208; c=relaxed/simple; bh=G4sTbhNh1HTjBc3AK7UszlyRR4xFAT2Sr/GT5PBoscw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GlmSzULjqZAm8/HhTC6VmR3vaHK8K3BmfLxSOb1OZ3r0mMWpdj25RnoKyIuSYNzHlZ72XbCiOrgXsLuM4a5gyqqMVPZ0B7cGlUWQSStXZc9lhB6XVnU4a+Gq8+tM2UNXZsQh9nQwA15eGOq8Hk2ynGPY4V/YKrVChCsQ4B6MH8o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bHouObMF; arc=none smtp.client-ip=209.85.222.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bHouObMF" Received: by mail-qk1-f175.google.com with SMTP id af79cd13be357-7c08fc20194so101898485a.2 for ; Wed, 09 Apr 2025 23:56:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744268205; x=1744873005; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=g+wsQP3176D0izkxKNDHdPvv/TXJHsloHJ6cokdroh8=; b=bHouObMFMah/62tS05v+vJM1B5aWCe0GNQ6ohIK6ZFHCFocDH5QDDOSvu05OWqHmV8 30XFGhsdoqNyCcDyhQVYgH1odEl1TiW9pP6xZa4KMptYIfQvw41v0MzB3b56sjDAVIYS HegcuUBO5crqnXLFbWzawD/AgdWoeF0343yulp/JRAhVcYU+S67pYtjjZWuaEO73FUIE hystS9CAF+FUSY8FU8pkUXQNJZUPulcgOxFc3NW0g3Qn4HEB78SxlizZ8KGWmaB0bpVh lrj2g0gRxizNUcm7mjF4W4mtMsJJ2gRMOmhBib3Vn+KtDBskS82hvCqdvaZiByWygXOd gbYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744268205; x=1744873005; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=g+wsQP3176D0izkxKNDHdPvv/TXJHsloHJ6cokdroh8=; b=neGXObfRQCX3W1WXdsA7gMGYjZvV3gwG//topuNr/tQHtMoBHGElrTPk3RVZspzrRr tPKIDGtYB+Do4p9nJiRdy7iENfyqDAJeaI9hb+w/MesI2lQddXXKsGxe2MRVPqb04VdY Uaza4o5LxhMac9pDtamNV5ZauGnZLdObDbt2izK24QTJtD7CbC4Lxs7W8C1oxoRdTrVK WnWk6ueNHTrA8C3LbKfH07tlikBQ8EHv8T/KkkMGIZ0qt0BfTUAyrGmMpH1/S6Xx1ulk sDErv+ka6WngaS/9v8K7IEFVUJsu8VcSEAs5OkZ+8aLAfGr9DyXsPDOqmSGDIS8Rf6BW jN9g== X-Gm-Message-State: AOJu0YymfN4aEIHi7jJX6rLDS1orrpsQwwSMctyp1PTNsmdVEScGuL98 QTf3QusRqXybL1x3dDTqtVIYa3BKbsGaAZEWxnKwqTi3K31VK4tw8/kTvFZ+ X-Gm-Gg: ASbGnctDFXnlD6HdUpgr4Nk2BIJHKTNy+rPs8wdvNoEgVJ3Sr6xP3jaexgftcoJ+Z8V MlGkB7b5i3c0hA0MqE5zdFwKlW+nv5c3uvBpNBzMCor6o1MmCm8DoDq3JbDelK8u35BfS7IkJDJ Q9WwtdPfIj7rM3Sg/UPHUT3FHOmjgugVLspcWCmBiPoFvAjkLyPyi8usH5XThc17f9b2LVBO33M Nzj9SQP9/NFAG+lG8c5qZj7an5gEiHt3e9z/t0D/SQeGWEAo1kAub0oEv36E5fBpQgeG4Oduzwo iPaOfjXWWOsGSpi9oo3UBtACIBuXOP4yVnmGFbrIAVAJAj9WUnKHLcbHVuMQYQ== X-Google-Smtp-Source: AGHT+IH4InyUfXvFHy9wew0zGMTWWAUknYjQnXzFYFulhKKW5BvpTJXx+LSGl6iMSBJor0GjmjMP+A== X-Received: by 2002:a05:620a:17a6:b0:7c5:d888:7098 with SMTP id af79cd13be357-7c7a76bffbemr229908685a.44.1744268205265; Wed, 09 Apr 2025 23:56:45 -0700 (PDT) Received: from localhost.localdomain ([128.224.253.2]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c7a89515e4sm46547285a.26.2025.04.09.23.56.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 23:56:44 -0700 (PDT) From: Kevin Hao Date: Thu, 10 Apr 2025 14:56:11 +0800 Subject: [PATCH 3/3] spi: fsl-qspi: Simplify probe error handling using managed API Precedence: bulk X-Mailing-List: linux-spi@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250410-spi-v1-3-56e867cc19cf@gmail.com> References: <20250410-spi-v1-0-56e867cc19cf@gmail.com> In-Reply-To: <20250410-spi-v1-0-56e867cc19cf@gmail.com> To: linux-spi@vger.kernel.org Cc: Han Xu , Mark Brown , imx@lists.linux.dev X-Mailer: b4 0.14.2 - Switch to devm_spi_alloc_host() to avoid manual spi_controller_put() calls in error paths. - Factor out the hardware disable logic into a dedicated fsl_qspi_disable() helper and register it as a managed cleanup action, removing the need to explicitly disable hardware after fsl_qspi_default_setup() failures. - Move fsl_qspi_cleanup() earlier in the probe sequence to eliminate the need for manual cleanup in the irq failure path. With these changes we can completely eliminate the messy goto labels in probe function. Signed-off-by: Kevin Hao --- drivers/spi/spi-fsl-qspi.c | 73 ++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 42 deletions(-) diff --git a/drivers/spi/spi-fsl-qspi.c b/drivers/spi/spi-fsl-qspi.c index b5ecffcaf7955e2ec9bb3e2857f8bc14d73a2f90..f879533535e853dac6bff22a3a5e87431a44a1d2 100644 --- a/drivers/spi/spi-fsl-qspi.c +++ b/drivers/spi/spi-fsl-qspi.c @@ -844,13 +844,18 @@ static const struct spi_controller_mem_caps fsl_qspi_mem_caps = { .per_op_freq = true, }; -static void fsl_qspi_cleanup(void *data) +static void fsl_qspi_disable(void *data) { struct fsl_qspi *q = data; /* disable the hardware */ qspi_writel(q, QUADSPI_MCR_MDIS_MASK, q->iobase + QUADSPI_MCR); qspi_writel(q, 0x0, q->iobase + QUADSPI_RSER); +} + +static void fsl_qspi_cleanup(void *data) +{ + struct fsl_qspi *q = data; fsl_qspi_clk_disable_unprep(q); @@ -866,7 +871,7 @@ static int fsl_qspi_probe(struct platform_device *pdev) struct fsl_qspi *q; int ret; - ctlr = spi_alloc_host(&pdev->dev, sizeof(*q)); + ctlr = devm_spi_alloc_host(&pdev->dev, sizeof(*q)); if (!ctlr) return -ENOMEM; @@ -876,68 +881,60 @@ static int fsl_qspi_probe(struct platform_device *pdev) q = spi_controller_get_devdata(ctlr); q->dev = dev; q->devtype_data = of_device_get_match_data(dev); - if (!q->devtype_data) { - ret = -ENODEV; - goto err_put_ctrl; - } + if (!q->devtype_data) + return -ENODEV; platform_set_drvdata(pdev, q); /* find the resources */ q->iobase = devm_platform_ioremap_resource_byname(pdev, "QuadSPI"); - if (IS_ERR(q->iobase)) { - ret = PTR_ERR(q->iobase); - goto err_put_ctrl; - } + if (IS_ERR(q->iobase)) + return PTR_ERR(q->iobase); res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "QuadSPI-memory"); - if (!res) { - ret = -EINVAL; - goto err_put_ctrl; - } + if (!res) + return -EINVAL; q->memmap_phy = res->start; /* Since there are 4 cs, map size required is 4 times ahb_buf_size */ q->ahb_addr = devm_ioremap(dev, q->memmap_phy, (q->devtype_data->ahb_buf_size * 4)); - if (!q->ahb_addr) { - ret = -ENOMEM; - goto err_put_ctrl; - } + if (!q->ahb_addr) + return -ENOMEM; /* find the clocks */ q->clk_en = devm_clk_get(dev, "qspi_en"); - if (IS_ERR(q->clk_en)) { - ret = PTR_ERR(q->clk_en); - goto err_put_ctrl; - } + if (IS_ERR(q->clk_en)) + return PTR_ERR(q->clk_en); q->clk = devm_clk_get(dev, "qspi"); - if (IS_ERR(q->clk)) { - ret = PTR_ERR(q->clk); - goto err_put_ctrl; - } + if (IS_ERR(q->clk)) + return PTR_ERR(q->clk); + + mutex_init(&q->lock); ret = fsl_qspi_clk_prep_enable(q); if (ret) { dev_err(dev, "can not enable the clock\n"); - goto err_put_ctrl; + return ret; } + ret = devm_add_action_or_reset(dev, fsl_qspi_cleanup, q); + if (ret) + return ret; + /* find the irq */ ret = platform_get_irq(pdev, 0); if (ret < 0) - goto err_disable_clk; + return ret; ret = devm_request_irq(dev, ret, fsl_qspi_irq_handler, 0, pdev->name, q); if (ret) { dev_err(dev, "failed to request irq: %d\n", ret); - goto err_disable_clk; + return ret; } - mutex_init(&q->lock); - ctlr->bus_num = -1; ctlr->num_chipselect = 4; ctlr->mem_ops = &fsl_qspi_mem_ops; @@ -947,23 +944,15 @@ static int fsl_qspi_probe(struct platform_device *pdev) ctlr->dev.of_node = np; - ret = devm_add_action_or_reset(dev, fsl_qspi_cleanup, q); + ret = devm_add_action_or_reset(dev, fsl_qspi_disable, q); if (ret) - goto err_put_ctrl; + return ret; ret = devm_spi_register_controller(dev, ctlr); if (ret) - goto err_put_ctrl; + return ret; return 0; - -err_disable_clk: - fsl_qspi_clk_disable_unprep(q); - -err_put_ctrl: - spi_controller_put(ctlr); - - return ret; } static int fsl_qspi_suspend(struct device *dev)