From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D4D55606A32D for ; Sat, 7 Nov 2026 20:13:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=1lsaGqWQ DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Unsubscribe-Post:List-Owner; bh=0eJnuT3GFCHARWNfyhqWDOaDCgtLf7Wq4y+dtj+Dt2E=; b=1lsaGqWQr4OP7ACW88WOyejDeH oOR4tZX97M1PjSwQwYCzAYvpKGfChAgOAwMu5kZ/w0UPQLv+66JdJdSHCY5HPA7l6gn5C4yUP4XEz p8aq42HfcTDd6Fxz2SwGkbcNuxcdPCcIsgb761DcdSCLcOshhDR+Zqnf2QgW7b+JiS9oREbsqYLGE kf9Uk1XlVVUFB4+mgowLiZE/TAI80P9OV1l4cn6J3Hy30uCzzVbSf7M8SXn1dLThc3mTroCr6bXer hVrdewHvXG3E0cfFDwbR5xpOjqdPSw2Yd9UtStt612aoV8Pq330yZ0ffVVJerpWnAT5++iQS5QBs7 Jk9HJaag==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.100.1 #2 (Red Hat Linux)) id 1xPmmY-0000000FGy0-0XPO; Sat, 07 Nov 2026 20:12:58 +0000 Received: from mail-oa1-f45.google.com ([209.85.160.45]) by bombadil.infradead.org with esmtps (Exim 4.100.1 #2 (Red Hat Linux)) id 1xPmmS-0000000FGtt-3ihY for linux-amlogic@lists.infradead.org; Sat, 07 Nov 2026 20:12:55 +0000 Received: by mail-oa1-f45.google.com with SMTP id 586e51a60fabf-4a76f0cce5fso2070fac.2 for ; Sat, 07 Nov 2026 12:12:52 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794082372; x=1794687172; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=0NNmQES/+1JXrHeJNaKSoCC/3wqUoF1IkOWxzblHBjM=; b=kDnL+QmGWxS4GxTQk8qRKIBMQipjX+bJLkodg6k5TlNEfASRYG3EHCbbRVMR9myLXx hqY722voZzhMuHYPYmY7CtGbN3OZ6AQGAiCVMPOrvKEq3FIdyqPZm5AiWSgU0YmwS0g0 dfoLw7daKZ0LMmV9syviID2DIWTVMF0JKyq3j5zy9j+yOn+QGykpx7wV30W6kWuYQ/W6 XytYLFjpFYofVMmbv/qUyFUWl1CghfeOKlAOpoJme1xTtS9RHaolU9e0/Ed0kLveYJxb DgDsZlmuW09TYFHkLsUU6jAPXQc9zR003BOeDkg+YYdrN/zfFHgPQAi2N+S3kncY5Frt KUew== X-Forwarded-Encrypted: i=1; AL+hErG6zc5pDYWR3HThpulOf9oc67NTVTvdh/ojhra/AxZZ14hJk3oQ+AziHi9K2OkXBhp/GlRJmeDNqWZamMTz@lists.infradead.org X-Gm-Message-State: APuU4Z/V41zyudVnvWB5X2oQWRa0GotI2ZKP1Nu/XNfeYgPmN0ca1lVE IXEeASP6IRvSgf3SwwZlZByfsvQkyT+ncsFLjFr+OByiXS+pXDFkMmOedTKS35glCD4= X-Gm-Gg: AYBFou32jRe00kNNP7F/IQAUdSElitFpMw358opXsAkKxzfenymnNv8gU8XgcFhQJzi SICw14BLXAWRvYmR9Fno5T9wd42MWLVcOH1Ec8MU9Dm+b4A0fB7Hi13DZj00C+qlazQmYT9dcJm CzpBT5PN7OeA1W1ZKFSpHF/BcDundqzGZVomeVNILaytUQNmc+gP+TUt2W4vP7I5K3oWyUnHp5a LEJIneE1AJ58NaVt+DDzsEJe9hQk9IIHpzfX/rQKUaWAjRD43j8beOw4tc1ZKd5bvPTPrvnLLnN mqI+TuAGm+D9ZDtnnrkxdro04OUV5TrXxllSZyv+5IMYcg/ctuCertsLLRR7j8I60x0D1p8RXTK n7oPh8CJQ7zDj57W/zckA4FE4Wj4d8iIJe8kbxjyEBvl0ZcW9EIMfhpijJahDTewyjaastr8qLI kgX6ALP+bjcDIueCd9S9YMhUx5s2STIbI2Ah8uQUigHozAE+w4CoFRijWOwizHYe6KY9efCbV8H C9w19qr293g7zxuBw9msthqCAjwRQ+NbQ6X3hh/lzJ8pYYgwEhPGgTnsaatItZmyO1RE/4m4ahO LtXRA/KJ+8yb9VZbr6ws490R+DTaODrf6JQqERieIiFAOzrybtcl9SntdIxe X-Received: by 2002:a05:6870:960b:b0:4a7:4d5f:c0a0 with SMTP id 586e51a60fabf-4ad98c4a8efmr4097388fac.38.1794082371748; Sat, 07 Nov 2026 12:12:51 -0800 (PST) Received: from [127.0.1.1] (174-29-1-49.hlrn.qwest.net. [174.29.1.49]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-4ade68aa561sm226096fac.5.2026.11.07.12.12.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Nov 2026 12:12:50 -0800 (PST) From: James Hilliard Date: Sat, 07 Nov 2026 03:16:24 -0700 Subject: [PATCH 27/58] mtd: rawnand: technologic: retain open-handle state on removal X-Archived-By: MIME-Version: 1.0 Message-Id: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-27-0181ef0cc4c8@gmail.com> References: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-0-0181ef0cc4c8@gmail.com> In-Reply-To: <20261107-submit-rawnand-retained-handle-lifetime-v1-v1-0-0181ef0cc4c8@gmail.com> To: Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Brian Norris , Boris Brezillon , Arseniy Krasnov , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Thomas Gleixner , Vitaly Wool , David Woodhouse , Russell King , David Woodhouse , Mike Rapoport , Maxime Coquelin , Alexandre Torgue , Christophe Kerello , Jason Roberts , Michal Simek , Boris Brezillon , Mason Yang , Ramuthevar Vadivel Murugan , Stefan Agner , Lucas Stach , Thierry Reding , Jonathan Hunter , Dmitry Osipenko , Matthias Brugger , AngeloGioacchino Del Regno , Jorge Ramirez-Ortiz , Heiko Stuebner , Yifeng Zhao , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea , Keguang Zhang , Jacky Huang , Shan-Chun Hung , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Han Xu , Liang Yang , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Manivannan Sadhasivam , Kamal Dasu , Broadcom internal kernel review list , Vladimir Zapolskiy , Piotr Wojtaszczyk , Paul Cercueil , Harvey Hunt , Maxim Levitsky , Michael Walle , Srinivas Kandagatla Cc: Tze Yee Ng , linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-tegra@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-mips@vger.kernel.org, imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org, James Hilliard X-Mailer: b4 0.15.2 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20261107_121252_931627_405433F5 X-CRM114-Status: GOOD ( 16.38 ) X-Spam-Score: 1.7 (+) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-amlogic" X-Spam-Status: No, score=-12.3 required=3.0 tests=BAYES_00,DATE_IN_PAST_06_12, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on aws-us-west-2-korg-listserv-alma10-1 Keep chip metadata and controller storage alive until the final MTD reference is released. Unregister and disconnect each published chip before releasing the resources used by its hardware operations. Transfer flash-node ownership to the retained-chip helper. Signed-off-by: James Hilliard --- drivers/mtd/nand/raw/technologic-nand-controller.c | 25 ++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/drivers/mtd/nand/raw/technologic-nand-controller.c b/drivers/mtd/nand/raw/technologic-nand-controller.c index a3294aaf43bd..a67f4d45f57b 100644 --- a/drivers/mtd/nand/raw/technologic-nand-controller.c +++ b/drivers/mtd/nand/raw/technologic-nand-controller.c @@ -132,6 +132,11 @@ static const struct nand_controller_ops ts72xx_nand_ops = { .exec_op = ts72xx_nand_exec_op, }; +static void ts72xx_nand_release(struct nand_controller *controller) +{ + kfree(container_of(controller, struct ts72xx_nand_data, controller)); +} + static int ts72xx_nand_probe(struct platform_device *pdev) { struct ts72xx_nand_data *data; @@ -139,11 +144,13 @@ static int ts72xx_nand_probe(struct platform_device *pdev) struct mtd_info *mtd; int err; - data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); + data = kzalloc_obj(*data); if (!data) return -ENOMEM; - nand_controller_init(&data->controller); + err = devm_nand_controller_init(&pdev->dev, &data->controller, ts72xx_nand_release); + if (err) + return err; data->controller.ops = &ts72xx_nand_ops; data->chip.controller = &data->controller; @@ -175,10 +182,17 @@ static int ts72xx_nand_probe(struct platform_device *pdev) if (err) goto err_handle_put; - err = mtd_device_parse_register(mtd, NULL, NULL, NULL, 0); + err = nand_set_release(&data->chip, NULL); if (err) goto err_clean_nand; + err = mtd_device_parse_register(mtd, NULL, NULL, NULL, 0); + if (err) { + nand_disconnect(&data->chip); + mtd_put_master(mtd); + goto err_handle_put; + } + fwnode_handle_put(child); return 0; err_clean_nand: @@ -191,14 +205,13 @@ static int ts72xx_nand_probe(struct platform_device *pdev) static void ts72xx_nand_remove(struct platform_device *pdev) { struct ts72xx_nand_data *data = platform_get_drvdata(pdev); - struct fwnode_handle *fwnode = dev_fwnode(&pdev->dev); struct nand_chip *chip = &data->chip; int ret; ret = mtd_device_unregister(nand_to_mtd(chip)); WARN_ON(ret); - nand_cleanup(chip); - fwnode_handle_put(fwnode); + nand_disconnect(chip); + mtd_put_master(nand_to_mtd(chip)); } static const struct of_device_id ts72xx_id_table[] = { -- 2.53.0 _______________________________________________ linux-amlogic mailing list linux-amlogic@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-amlogic