mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 12:44:11 +08:00
proc_sys_fill_cache(): switch to d_alloc_parallel()
make it usable with directory locked shared Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
3781764b5c
commit
76aab3ab61
@ -627,18 +627,19 @@ static bool proc_sys_fill_cache(struct file *file,
|
||||
|
||||
child = d_lookup(dir, &qname);
|
||||
if (!child) {
|
||||
child = d_alloc(dir, &qname);
|
||||
if (child) {
|
||||
DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq);
|
||||
child = d_alloc_parallel(dir, &qname, &wq);
|
||||
if (IS_ERR(child))
|
||||
return false;
|
||||
if (d_in_lookup(child)) {
|
||||
inode = proc_sys_make_inode(dir->d_sb, head, table);
|
||||
if (!inode) {
|
||||
d_lookup_done(child);
|
||||
dput(child);
|
||||
return false;
|
||||
} else {
|
||||
d_set_d_op(child, &proc_sys_dentry_operations);
|
||||
d_add(child, inode);
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
d_set_d_op(child, &proc_sys_dentry_operations);
|
||||
d_add(child, inode);
|
||||
}
|
||||
}
|
||||
inode = d_inode(child);
|
||||
|
Loading…
Reference in New Issue
Block a user