Merge branch 'work.lookup' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull proc_fill_cache regression fix from Al Viro: "Regression fix for proc_fill_cache() braino introduced when switching instantiate() callback to d_splice_alias()" * 'work.lookup' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: fix proc_fill_cache() in case of d_alloc_parallel() failure
This commit is contained in:
commit
4189b863ba
|
@ -1866,19 +1866,19 @@ bool proc_fill_cache(struct file *file, struct dir_context *ctx,
|
||||||
struct dentry *res;
|
struct dentry *res;
|
||||||
res = instantiate(child, task, ptr);
|
res = instantiate(child, task, ptr);
|
||||||
d_lookup_done(child);
|
d_lookup_done(child);
|
||||||
if (IS_ERR(res))
|
|
||||||
goto end_instantiate;
|
|
||||||
if (unlikely(res)) {
|
if (unlikely(res)) {
|
||||||
dput(child);
|
dput(child);
|
||||||
child = res;
|
child = res;
|
||||||
|
if (IS_ERR(child))
|
||||||
|
goto end_instantiate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inode = d_inode(child);
|
inode = d_inode(child);
|
||||||
ino = inode->i_ino;
|
ino = inode->i_ino;
|
||||||
type = inode->i_mode >> 12;
|
type = inode->i_mode >> 12;
|
||||||
end_instantiate:
|
|
||||||
dput(child);
|
dput(child);
|
||||||
|
end_instantiate:
|
||||||
return dir_emit(ctx, name, len, ino, type);
|
return dir_emit(ctx, name, len, ino, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue