Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3f8e175 authored by Al Viro's avatar Al Viro
Browse files

[PATCH] reduce the stack footprint of exportfs_decode_fh()



no need to have _two_ 256-byte arrays on stack...

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 9308a612
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -94,9 +94,8 @@ find_disconnected_root(struct dentry *dentry)
 * It may already be, as the flag isn't always updated when connection happens.
 */
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 err = -ESTALE;

@@ -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;
	struct dentry *result, *alias;
	char nbuf[NAME_MAX+1];
	int err;

	/*
@@ -379,7 +379,7 @@ struct dentry *exportfs_decode_fh(struct vfsmount *mnt, struct fid *fid,
		 * filesystem root.
		 */
		if (result->d_flags & DCACHE_DISCONNECTED) {
			err = reconnect_path(mnt, result);
			err = reconnect_path(mnt, result, nbuf);
			if (err)
				goto err_result;
		}
@@ -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.
		 */
		struct dentry *target_dir, *nresult;
		char nbuf[NAME_MAX+1];

		/*
		 * 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,
		 * connected to the filesystem root.  The VFS really doesn't
		 * like disconnected directories..
		 */
		err = reconnect_path(mnt, target_dir);
		err = reconnect_path(mnt, target_dir, nbuf);
		if (err) {
			dput(target_dir);
			goto err_result;