mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
regulator: core: fix debugfs creation regression
commit2a4b49bb58
upstream. regulator_get() may sometimes be called more than once for the same consumer device, something which before commitdbe954d8f1
("regulator: core: Avoid debugfs: Directory ... already present! error") resulted in errors being logged. A couple of recent commits broke the handling of such cases so that attributes are now erroneously created in the debugfs root directory the second time a regulator is requested and the log is filled with errors like: debugfs: File 'uA_load' in directory '/' already present! debugfs: File 'min_uV' in directory '/' already present! debugfs: File 'max_uV' in directory '/' already present! debugfs: File 'constraint_flags' in directory '/' already present! on any further calls. Fixes:2715bb11cf
("regulator: core: Fix more error checking for debugfs_create_dir()") Fixes:08880713ce
("regulator: core: Streamline debugfs operations") Cc: stable@vger.kernel.org Cc: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Johan Hovold <johan+linaro@kernel.org> Link: https://lore.kernel.org/r/20240509133304.8883-1-johan+linaro@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
6a607d1baf
commit
ebed91287c
@ -1911,19 +1911,24 @@ static struct regulator *create_regulator(struct regulator_dev *rdev,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err != -EEXIST)
|
if (err != -EEXIST) {
|
||||||
regulator->debugfs = debugfs_create_dir(supply_name, rdev->debugfs);
|
regulator->debugfs = debugfs_create_dir(supply_name, rdev->debugfs);
|
||||||
if (IS_ERR(regulator->debugfs))
|
if (IS_ERR(regulator->debugfs)) {
|
||||||
rdev_dbg(rdev, "Failed to create debugfs directory\n");
|
rdev_dbg(rdev, "Failed to create debugfs directory\n");
|
||||||
|
regulator->debugfs = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
debugfs_create_u32("uA_load", 0444, regulator->debugfs,
|
if (regulator->debugfs) {
|
||||||
®ulator->uA_load);
|
debugfs_create_u32("uA_load", 0444, regulator->debugfs,
|
||||||
debugfs_create_u32("min_uV", 0444, regulator->debugfs,
|
®ulator->uA_load);
|
||||||
®ulator->voltage[PM_SUSPEND_ON].min_uV);
|
debugfs_create_u32("min_uV", 0444, regulator->debugfs,
|
||||||
debugfs_create_u32("max_uV", 0444, regulator->debugfs,
|
®ulator->voltage[PM_SUSPEND_ON].min_uV);
|
||||||
®ulator->voltage[PM_SUSPEND_ON].max_uV);
|
debugfs_create_u32("max_uV", 0444, regulator->debugfs,
|
||||||
debugfs_create_file("constraint_flags", 0444, regulator->debugfs,
|
®ulator->voltage[PM_SUSPEND_ON].max_uV);
|
||||||
regulator, &constraint_flags_fops);
|
debugfs_create_file("constraint_flags", 0444, regulator->debugfs,
|
||||||
|
regulator, &constraint_flags_fops);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check now if the regulator is an always on regulator - if
|
* Check now if the regulator is an always on regulator - if
|
||||||
|
Loading…
Reference in New Issue
Block a user