mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 00:22:00 +02:00
pds_core: fix debugfs_lookup dentry leak and error handling
debugfs_lookup() returns a dentry with an elevated reference count that
must be released with dput(). The current code discards the returned
dentry without calling dput(), causing a reference leak on every
firmware reset recovery.
Additionally, when CONFIG_DEBUG_FS is disabled, debugfs_lookup()
returns ERR_PTR(-ENODEV), not NULL. The current check passes for error
pointers and would call dput() on an invalid pointer, causing a crash.
Fixes: bc90fbe0c3 ("pds_core: Rework teardown/setup flow to be more common")
Signed-off-by: Nikhil P. Rao <nikhil.rao@amd.com>
Link: https://patch.msgid.link/20260515212907.998028-3-nikhil.rao@amd.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
0e46b6635b
commit
dc416e32ba
|
|
@ -64,9 +64,14 @@ DEFINE_SHOW_ATTRIBUTE(identity);
|
|||
|
||||
void pdsc_debugfs_add_ident(struct pdsc *pdsc)
|
||||
{
|
||||
struct dentry *dentry;
|
||||
|
||||
/* This file will already exist in the reset flow */
|
||||
if (debugfs_lookup("identity", pdsc->dentry))
|
||||
dentry = debugfs_lookup("identity", pdsc->dentry);
|
||||
if (!IS_ERR_OR_NULL(dentry)) {
|
||||
dput(dentry);
|
||||
return;
|
||||
}
|
||||
|
||||
debugfs_create_file("identity", 0400, pdsc->dentry,
|
||||
pdsc, &identity_fops);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user