2023-07-14 08:21:26

by Minjie Du

[permalink] [raw]
Subject: [PATCH v5] iommu: Fix an error check in tegra_smmu_debugfs_init()

debugfs_create_dir() function returns an error value(PTR_ERR).
We need to evaluate the return value using IS_ERR,
rather than checking for NULL.

Fixes: d1313e7896e9 ("iommu/tegra-smmu: Add debugfs support")
Signed-off-by: Minjie Du <[email protected]>
---
V4 -> V5: debugfs needs to have error checking, so use IS_ERR() to error check.
V3 -> V4: fix expression about patch.
V2 -> V3: fix expression about patch.
V1 -> V2: remove the error check.
V1: use IS_ERR() to error check.
---
drivers/iommu/tegra-smmu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c
index 1cbf063cc..841e14cce 100644
--- a/drivers/iommu/tegra-smmu.c
+++ b/drivers/iommu/tegra-smmu.c
@@ -1056,7 +1056,7 @@ DEFINE_SHOW_ATTRIBUTE(tegra_smmu_clients);
static void tegra_smmu_debugfs_init(struct tegra_smmu *smmu)
{
smmu->debugfs = debugfs_create_dir("smmu", NULL);
- if (!smmu->debugfs)
+ if (IS_ERR(smmu->debugfs))
return;

debugfs_create_file("swgroups", S_IRUGO, smmu->debugfs, smmu,
--
2.39.0



2023-07-15 07:16:25

by Baolu Lu

[permalink] [raw]
Subject: Re: [PATCH v5] iommu: Fix an error check in tegra_smmu_debugfs_init()

On 7/14/23 4:13 PM, Minjie Du wrote:
> debugfs_create_dir() function returns an error value(PTR_ERR).
> We need to evaluate the return value using IS_ERR,
> rather than checking for NULL.
>
> Fixes: d1313e7896e9 ("iommu/tegra-smmu: Add debugfs support")
> Signed-off-by: Minjie Du<[email protected]>
> ---
> V4 -> V5: debugfs needs to have error checking, so use IS_ERR() to error check.

Why?

[...]
* NOTE: it's expected that most callers should _ignore_ the errors
returned
* by this function. Other debugfs functions handle the fact that the
"dentry"
* passed to them could be an error and they don't crash in that case.
* Drivers should generally work fine even if debugfs fails to init anyway.
*/
struct dentry *debugfs_create_dir(const char *name, struct dentry *parent)
{
struct dentry *dentry = start_creating(name, parent);
struct inode *inode;

if (IS_ERR(dentry))
return dentry;

[...]

Best regards,
baolu