new helper: lookup_positive_unlocked()
Most of the callers of lookup_one_len_unlocked() treat negatives are ERR_PTR(-ENOENT). Provide a helper that would do just that. Note that a pinned positive dentry remains positive - it's ->d_inode is stable, etc.; a pinned _negative_ dentry can become positive at any point as long as you are not holding its parent at least shared. So using lookup_one_len_unlocked() needs to be careful; lookup_positive_unlocked() is safer and that's what the callers end up open-coding anyway. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
+1
-5
@@ -299,13 +299,9 @@ struct dentry *debugfs_lookup(const char *name, struct dentry *parent)
|
||||
if (!parent)
|
||||
parent = debugfs_mount->mnt_root;
|
||||
|
||||
dentry = lookup_one_len_unlocked(name, parent, strlen(name));
|
||||
dentry = lookup_positive_unlocked(name, parent, strlen(name));
|
||||
if (IS_ERR(dentry))
|
||||
return NULL;
|
||||
if (!d_really_is_positive(dentry)) {
|
||||
dput(dentry);
|
||||
return NULL;
|
||||
}
|
||||
return dentry;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(debugfs_lookup);
|
||||
|
||||
Reference in New Issue
Block a user