]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: cs-amp-lib: Fix missing dput() after debugfs_lookup()
authorRichard Fitzgerald <rf@opensource.cirrus.com>
Thu, 21 May 2026 12:25:10 +0000 (13:25 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 21 May 2026 14:13:49 +0000 (15:13 +0100)
Rewrite cs_amp_create_debugfs() so that dput() will be called on
a valid dentry returned from debugfs_lookup().

The pointer returned from debugfs_lookup() must be released by dput().
The pointer returned from debugfs_create_dir() does not need to be
passed to dput().

Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
Fixes: cdd27fa3298a ("ASoC: cs-amp-lib: Add helpers for factory calibration")
Link: https://patch.msgid.link/20260521122511.987322-3-rf@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs-amp-lib.c

index 881c6f2264f341a42fc5a0ed3cf135661e30b416..e97a125ebbb3d05405abe3a2e0fb4445b16beba4 100644 (file)
@@ -833,11 +833,18 @@ EXPORT_SYMBOL_NS_GPL(cs_amp_devm_get_vendor_specific_variant_id, "SND_SOC_CS_AMP
  */
 struct dentry *cs_amp_create_debugfs(struct device *dev)
 {
-       struct dentry *dir;
+       struct dentry *dir, *created;
 
+       /* debugfs_lookup() can return NULL or ERR_PTR on error */
        dir = debugfs_lookup("cirrus_logic", NULL);
-       if (!dir)
-               dir = debugfs_create_dir("cirrus_logic", NULL);
+       if (!IS_ERR_OR_NULL(dir)) {
+               created = debugfs_create_dir(dev_name(dev), dir);
+               dput(dir);
+
+               return created;
+       }
+
+       dir = debugfs_create_dir("cirrus_logic", NULL);
 
        return debugfs_create_dir(dev_name(dev), dir);
 }