diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2013-08-30 15:46:46 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-09-03 22:50:28 -0400 |
| commit | 184cacabe274a0af65b3876e9cd95c9fdde069ea (patch) | |
| tree | d575f2cabd8a1d422d09e26967a04790979f7fee | |
| parent | 301f0268b63d1b07268e46f5901fc51d6cac20eb (diff) | |
only regular files with FMODE_WRITE need to be on s_files
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| -rw-r--r-- | fs/file_table.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/file_table.c b/fs/file_table.c index b44e4c559786..322cd37626cb 100644 --- a/fs/file_table.c +++ b/fs/file_table.c | |||
| @@ -385,6 +385,10 @@ static inline void __file_sb_list_add(struct file *file, struct super_block *sb) | |||
| 385 | */ | 385 | */ |
| 386 | void file_sb_list_add(struct file *file, struct super_block *sb) | 386 | void file_sb_list_add(struct file *file, struct super_block *sb) |
| 387 | { | 387 | { |
| 388 | if (likely(!(file->f_mode & FMODE_WRITE))) | ||
| 389 | return; | ||
| 390 | if (!S_ISREG(file_inode(file)->i_mode)) | ||
| 391 | return; | ||
| 388 | lg_local_lock(&files_lglock); | 392 | lg_local_lock(&files_lglock); |
| 389 | __file_sb_list_add(file, sb); | 393 | __file_sb_list_add(file, sb); |
| 390 | lg_local_unlock(&files_lglock); | 394 | lg_local_unlock(&files_lglock); |
| @@ -450,8 +454,6 @@ void mark_files_ro(struct super_block *sb) | |||
| 450 | 454 | ||
| 451 | lg_global_lock(&files_lglock); | 455 | lg_global_lock(&files_lglock); |
| 452 | do_file_list_for_each_entry(sb, f) { | 456 | do_file_list_for_each_entry(sb, f) { |
| 453 | if (!S_ISREG(file_inode(f)->i_mode)) | ||
| 454 | continue; | ||
| 455 | if (!file_count(f)) | 457 | if (!file_count(f)) |
| 456 | continue; | 458 | continue; |
| 457 | if (!(f->f_mode & FMODE_WRITE)) | 459 | if (!(f->f_mode & FMODE_WRITE)) |
