2023-05-17 17:39:37

by Osama Muhammad

[permalink] [raw]
Subject: [PATCH] spi-dw-core.c: Fix error checking for debugfs_create_dir

This patch fixes the error checking in spi-dw-core.c in
debugfs_create_dir. The correct way to check if an error occurred
is 'IS_ERR' inline function.

Signed-off-by: Osama Muhammad <[email protected]>
---
drivers/spi/spi-dw-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
index ae3108c70f50..c9cdf6bbcd0e 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
@@ -63,7 +63,7 @@ static int dw_spi_debugfs_init(struct dw_spi *dws)

snprintf(name, 32, "dw_spi%d", dws->master->bus_num);
dws->debugfs = debugfs_create_dir(name, NULL);
- if (!dws->debugfs)
+ if (IS_ERR(dws->debugfs))
return -ENOMEM;

dws->regset.regs = dw_spi_dbgfs_regs;
--
2.34.1



2023-05-17 21:36:57

by Serge Semin

[permalink] [raw]
Subject: Re: [PATCH] spi-dw-core.c: Fix error checking for debugfs_create_dir

Hi Osama

On Wed, May 17, 2023 at 10:31:02PM +0500, Osama Muhammad wrote:
> This patch fixes the error checking in spi-dw-core.c in
> debugfs_create_dir. The correct way to check if an error occurred
> is 'IS_ERR' inline function.

AFAICS a correct way to fix this would be to drop the errors check
from the implementation and convert the dw_spi_debugfs_init() function
to returning void. DebugFS kernel API is designed in a way for the
kernel to safely ignore the errors happening during the DebugFS nodes
creation. See
Link: https://elixir.bootlin.com/linux/latest/source/fs/debugfs/inode.c#L574
for details.

-Serge(y)

>
> Signed-off-by: Osama Muhammad <[email protected]>
> ---
> drivers/spi/spi-dw-core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
> index ae3108c70f50..c9cdf6bbcd0e 100644
> --- a/drivers/spi/spi-dw-core.c
> +++ b/drivers/spi/spi-dw-core.c
> @@ -63,7 +63,7 @@ static int dw_spi_debugfs_init(struct dw_spi *dws)
>
> snprintf(name, 32, "dw_spi%d", dws->master->bus_num);
> dws->debugfs = debugfs_create_dir(name, NULL);
> - if (!dws->debugfs)
> + if (IS_ERR(dws->debugfs))
> return -ENOMEM;
>
> dws->regset.regs = dw_spi_dbgfs_regs;
> --
> 2.34.1
>