[PATCH v3] cache: sifive_ccache: remove debugfs on driver register failure
Jonathan Cameron
jic23 at kernel.org
Fri Aug 14 18:05:58 PDT 2026
On Fri, 14 Aug 2026 16:13:34 +0800
Pengpeng Hou <pengpeng at iscas.ac.cn> wrote:
> sifive_ccache_init() creates its debugfs entries before registering the
> platform driver. If platform_driver_register() fails, the current error
> path unmaps ccache_base but leaves the debugfs file and its write
> callback reachable.
>
> Remove the debugfs directory on that failure path before unmapping the
> controller registers.
>
> Fixes: c90847bcbfb6 ("cache: sifive_ccache: Partially convert to a platform driver")
>
No blank lines in tag blocks. That breaks a bunch of tooling that
runs on the kernel + tends to get you a message from one
of the bots that is there to prevent this getting merged.
> Assisted-by: Codex:gpt-5
> Signed-off-by: Pengpeng Hou <pengpeng at iscas.ac.cn>
> ---
> Changes since v2: https://lore.kernel.org/all/20260623015527.32846-1-pengpeng@iscas.ac.cn/
> - no source-code changes
> - rebase on current RISC-V sources
> - add the coding-assistant disclosure
>
> The error path was reviewed statically. It was not exercised on SiFive
> hardware.
>
> drivers/cache/sifive_ccache.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cache/sifive_ccache.c b/drivers/cache/sifive_ccache.c
> index 2acb8bdf06d5..3b7a78fc7feb 100644
> --- a/drivers/cache/sifive_ccache.c
> +++ b/drivers/cache/sifive_ccache.c
> @@ -338,12 +338,16 @@ static int __init sifive_ccache_init(void)
>
> rc = platform_driver_register(&sifive_ccache_driver);
> if (rc)
> - goto err_unmap;
> + goto err_remove_debugfs;
>
> of_node_put(np);
>
> return 0;
>
> +err_remove_debugfs:
> +#ifdef CONFIG_DEBUG_FS
It is stubbed out in debugfs.h so no need for guards here.
So for that matter are the creation functions used in here.
Ideally follow this patch with one removing ifdef CONFIG_DEBUG_FS
from the driver. Both calls will return errors but that is
fine as they aren't checked anyway (common for debugfs
as a driver is almost never expected to fail probe just because
debugfs isn't there). Note removing those guards should (feel
free to check) result in no overhead as they dead code should get
removed.
Jonathan
> + debugfs_remove_recursive(sifive_test);
> +#endif
> err_unmap:
> iounmap(ccache_base);
> err_node_put:
More information about the linux-riscv
mailing list