提交 f3f8e175 编写于 作者: A Al Viro

[PATCH] reduce the stack footprint of exportfs_decode_fh()

no need to have _two_ 256-byte arrays on stack...
Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 9308a612
...@@ -94,9 +94,8 @@ find_disconnected_root(struct dentry *dentry) ...@@ -94,9 +94,8 @@ find_disconnected_root(struct dentry *dentry)
* It may already be, as the flag isn't always updated when connection happens. * It may already be, as the flag isn't always updated when connection happens.
*/ */
static int static int
reconnect_path(struct vfsmount *mnt, struct dentry *target_dir) reconnect_path(struct vfsmount *mnt, struct dentry *target_dir, char *nbuf)
{ {
char nbuf[NAME_MAX+1];
int noprogress = 0; int noprogress = 0;
int err = -ESTALE; int err = -ESTALE;
...@@ -360,6 +359,7 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid, ...@@ -360,6 +359,7 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
{ {
const struct export_operations *nop = mnt->mnt_sb->s_export_op; const struct export_operations *nop = mnt->mnt_sb->s_export_op;
struct dentry *result, *alias; struct dentry *result, *alias;
char nbuf[NAME_MAX+1];
int err; int err;
/* /*
...@@ -379,7 +379,7 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid, ...@@ -379,7 +379,7 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
* filesystem root. * filesystem root.
*/ */
if (result->d_flags & DCACHE_DISCONNECTED) { if (result->d_flags & DCACHE_DISCONNECTED) {
err = reconnect_path(mnt, result); err = reconnect_path(mnt, result, nbuf);
if (err) if (err)
goto err_result; goto err_result;
} }
...@@ -395,7 +395,6 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid, ...@@ -395,7 +395,6 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
* It's not a directory. Life is a little more complicated. * It's not a directory. Life is a little more complicated.
*/ */
struct dentry *target_dir, *nresult; struct dentry *target_dir, *nresult;
char nbuf[NAME_MAX+1];
/* /*
* See if either the dentry we just got from the filesystem * See if either the dentry we just got from the filesystem
...@@ -429,7 +428,7 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid, ...@@ -429,7 +428,7 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
* connected to the filesystem root. The VFS really doesn't * connected to the filesystem root. The VFS really doesn't
* like disconnected directories.. * like disconnected directories..
*/ */
err = reconnect_path(mnt, target_dir); err = reconnect_path(mnt, target_dir, nbuf);
if (err) { if (err) {
dput(target_dir); dput(target_dir);
goto err_result; goto err_result;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册