diff options
author | Duane Griffin <duaneg@dghda.com> | 2009-01-07 21:07:26 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-08 11:31:01 -0500 |
commit | 2e8671cb566da993425d324fc355af31edc6e7f1 (patch) | |
tree | 6da1dc8231ecbff398229398b602a6a3543979fd | |
parent | 5df096d67ec2b6578518caed7d57317a4b807aa1 (diff) |
ext3: don't inherit inappropriate inode flags from parent
At present INDEX is the only flag that new ext3 inodes do NOT inherit from
their parent. In addition prevent the flags DIRTY, ECOMPR, IMAGIC and
TOPDIR from being inherited. List inheritable flags explicitly to prevent
future flags from accidentally being inherited.
This fixes the TOPDIR flag inheritance bug reported at
http://bugzilla.kernel.org/show_bug.cgi?id=9866.
Signed-off-by: Duane Griffin <duaneg@dghda.com>
Acked-by: Andreas Dilger <adilger@sun.com>
Cc: <linux-ext4@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | fs/ext3/ialloc.c | 2 | ||||
-rw-r--r-- | include/linux/ext3_fs.h | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c index 5655fbcbd11f..ba9186a21d1e 100644 --- a/fs/ext3/ialloc.c +++ b/fs/ext3/ialloc.c | |||
@@ -559,7 +559,7 @@ got: | |||
559 | ei->i_dir_start_lookup = 0; | 559 | ei->i_dir_start_lookup = 0; |
560 | ei->i_disksize = 0; | 560 | ei->i_disksize = 0; |
561 | 561 | ||
562 | ei->i_flags = EXT3_I(dir)->i_flags & ~EXT3_INDEX_FL; | 562 | ei->i_flags = EXT3_I(dir)->i_flags & EXT3_FL_INHERITED; |
563 | if (S_ISLNK(mode)) | 563 | if (S_ISLNK(mode)) |
564 | ei->i_flags &= ~(EXT3_IMMUTABLE_FL|EXT3_APPEND_FL); | 564 | ei->i_flags &= ~(EXT3_IMMUTABLE_FL|EXT3_APPEND_FL); |
565 | /* dirsync only applies to directories */ | 565 | /* dirsync only applies to directories */ |
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h index d14f02918483..b745619a9b8e 100644 --- a/include/linux/ext3_fs.h +++ b/include/linux/ext3_fs.h | |||
@@ -178,6 +178,13 @@ struct ext3_group_desc | |||
178 | #define EXT3_FL_USER_VISIBLE 0x0003DFFF /* User visible flags */ | 178 | #define EXT3_FL_USER_VISIBLE 0x0003DFFF /* User visible flags */ |
179 | #define EXT3_FL_USER_MODIFIABLE 0x000380FF /* User modifiable flags */ | 179 | #define EXT3_FL_USER_MODIFIABLE 0x000380FF /* User modifiable flags */ |
180 | 180 | ||
181 | /* Flags that should be inherited by new inodes from their parent. */ | ||
182 | #define EXT3_FL_INHERITED (EXT3_SECRM_FL | EXT3_UNRM_FL | EXT3_COMPR_FL |\ | ||
183 | EXT3_SYNC_FL | EXT3_IMMUTABLE_FL | EXT3_APPEND_FL |\ | ||
184 | EXT3_NODUMP_FL | EXT3_NOATIME_FL | EXT3_COMPRBLK_FL|\ | ||
185 | EXT3_NOCOMPR_FL | EXT3_JOURNAL_DATA_FL |\ | ||
186 | EXT3_NOTAIL_FL | EXT3_DIRSYNC_FL) | ||
187 | |||
181 | /* | 188 | /* |
182 | * Inode dynamic state flags | 189 | * Inode dynamic state flags |
183 | */ | 190 | */ |