From: Erez Zadok <ezk@xxxxxxxxxxxxx> gcc4 decided to inline do_remount_{add,del,mode}_option creating an 600 byte stack abuser on a x86_64 test box. Reported by: Josef 'Jeff' Sipek <jsipek@xxxxxxxxxxxxx> Signed-off-by: Erez Zadok <ezk@xxxxxxxxxxxxx> Signed-off-by: Josef 'Jeff' Sipek <jsipek@xxxxxxxxxxxxx> --- fs/unionfs/lookup.c | 2 +- fs/unionfs/super.c | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/fs/unionfs/lookup.c b/fs/unionfs/lookup.c index 0572247..0fc5993 100644 --- a/fs/unionfs/lookup.c +++ b/fs/unionfs/lookup.c @@ -30,7 +30,7 @@ static int is_validname(const char *name) } /* The rest of these are utility functions for lookup. */ -static int is_opaque_dir(struct dentry *dentry, int bindex) +static noinline int is_opaque_dir(struct dentry *dentry, int bindex) { int err = 0; struct dentry *hidden_dentry; diff --git a/fs/unionfs/super.c b/fs/unionfs/super.c index ec5706b..e6a6cc1 100644 --- a/fs/unionfs/super.c +++ b/fs/unionfs/super.c @@ -148,9 +148,9 @@ static int unionfs_statfs(struct dentry *dentry, struct kstatfs *buf) } /* handle mode changing during remount */ -static int do_remount_mode_option(char *optarg, int cur_branches, - struct unionfs_data *new_data, - struct path *new_lower_paths) +static noinline int do_remount_mode_option(char *optarg, int cur_branches, + struct unionfs_data *new_data, + struct path *new_lower_paths) { int err = -EINVAL; int perms, idx; @@ -207,9 +207,9 @@ out: } /* handle branch deletion during remount */ -static int do_remount_del_option(char *optarg, int cur_branches, - struct unionfs_data *new_data, - struct path *new_lower_paths) +static noinline int do_remount_del_option(char *optarg, int cur_branches, + struct unionfs_data *new_data, + struct path *new_lower_paths) { int err = -EINVAL; int idx; @@ -268,10 +268,10 @@ out: } /* handle branch insertion during remount */ -static int do_remount_add_option(char *optarg, int cur_branches, - struct unionfs_data *new_data, - struct path *new_lower_paths, - int *high_branch_id) +static noinline int do_remount_add_option(char *optarg, int cur_branches, + struct unionfs_data *new_data, + struct path *new_lower_paths, + int *high_branch_id) { int err = -EINVAL; int perms; -- 1.5.0.3.268.g3dda - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html