aboutsummaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorAndrew Chant <achant@google.com>2017-02-08 15:33:48 -0800
committerMister Oyster <oysterized@gmail.com>2017-04-16 15:03:46 +0200
commitc04152e873b3e6ff4ca4bdde18b10e99fb43aa92 (patch)
treec7e439f23982aad54eac0626dd4607ad363193a1 /fs
parent56673e746547df572ed0da2a46ce7cb65791a649 (diff)
sdcardfs: limit stacking depth
Limit filesystem stacking to prevent stack overflow. Bug: 32761463 Change-Id: I8b1462b9c0d6c7f00cf110724ffb17e7f307c51e Signed-off-by: Andrew Chant <achant@google.com>
Diffstat (limited to 'fs')
-rwxr-xr-xfs/sdcardfs/main.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/sdcardfs/main.c b/fs/sdcardfs/main.c
index fe7507d41..bf3d3ab93 100755
--- a/fs/sdcardfs/main.c
+++ b/fs/sdcardfs/main.c
@@ -281,6 +281,13 @@ static int sdcardfs_read_super(struct vfsmount *mnt, struct super_block *sb,
atomic_inc(&lower_sb->s_active);
sdcardfs_set_lower_super(sb, lower_sb);
+ sb->s_stack_depth = lower_sb->s_stack_depth + 1;
+ if (sb->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) {
+ pr_err("sdcardfs: maximum fs stacking depth exceeded\n");
+ err = -EINVAL;
+ goto out_sput;
+ }
+
/* inherit maxbytes from lower file system */
sb->s_maxbytes = lower_sb->s_maxbytes;