diff options
author | Andrew Chant <achant@google.com> | 2017-02-08 15:33:48 -0800 |
---|---|---|
committer | John Dias <joaodias@google.com> | 2017-02-15 01:21:23 +0000 |
commit | 973e31f8d82a7cf4bd22ac436797d023112142b6 (patch) | |
tree | 10a5daf538f96555933beca3d8c5c92a91280531 | |
parent | d40fc7596b6e1172ff3349bbc38fb6c695c61467 (diff) | |
download | x86_64-973e31f8d82a7cf4bd22ac436797d023112142b6.tar.gz |
sdcardfs: limit stacking depth
Limit filesystem stacking to prevent stack overflow.
Bug: 32761463
Change-Id: I8b1462b9c0d6c7f00cf110724ffb17e7f307c51e
Signed-off-by: Andrew Chant <achant@google.com>
-rwxr-xr-x | fs/sdcardfs/main.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/sdcardfs/main.c b/fs/sdcardfs/main.c index a6522286d731..8b51a124298f 100755 --- a/fs/sdcardfs/main.c +++ b/fs/sdcardfs/main.c @@ -223,6 +223,13 @@ static int sdcardfs_read_super(struct super_block *sb, const char *dev_name, 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; |