ocfs2: Handle quota file corruption more gracefully
PATCH 1/1 ocfs2: Handle quota file corruption more gracefully
ocfs2_read_virt_blocks() does BUG when we try to read a block from a file beyond its end. Since this can happen due to filesystem corruption, it is not really an appropriate answer. Make ocfs2_read_quota_block() check the condition and handle it by calling ocfs2_error() and returning EIO.
---
Joel, could you please merge this fix? Thanks.
fs/ocfs2/quota_global.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
fs/ocfs2/quota_global.c +9 -0
@@ -23,6 +23,7 @@#include "sysfile.h" #include "dlmglue.h" #include "uptodate.h" +#include "super.h" #include "quota.h" static struct workqueue_struct *ocfs2_quota_wq =NULL ;
@@ -114,6 +115,14 @@ int ocfs2_read_quota_block(struct inode *inode, u64 v_block,int rc =0 ;struct buffer_head *tmp = *bh; +if (i_size_read (inode) >> inode->i_sb->s_blocksize_bits <= v_block) { +ocfs2_error (inode->i_sb, +"Quota file %lu is probably corrupted! Requested " +"to read block %Lu but file has size only %Lu\n" , + inode->i_ino, (unsigned long long )v_block, + (unsigned long long )i_size_read (inode)); +return -EIO ; + } rc =ocfs2_read_virt_blocks (inode, v_block,1 , &tmp,0 , ocfs2_validate_quota_block);if (rc)
Signature · 1 line
1.6.0.2
PATCH 1/1 ocfs2: Handle quota file corruption more gracefully
Quoted 9 lines · Jan Kara
ocfs2_read_virt_blocks()does BUG when we try to read a block from a file beyond its end. Since this can happen due to filesystem corruption, it is not really an appropriate answer. Makeocfs2_read_quota_block()check the condition and handle it by callingocfs2_error()and returning EIO.Reported-by Tristan Ye <[email protected]>Signed-off-by Jan Kara <[email protected]>---
Joel, could you please merge this fix? Thanks.
This is now in the fixes branch of ocfs2.git. That <= check is a little confusing, because it relies on quota files always being whole blocks.
Joel
Signature · 8 lines
"We'd better get back, `cause it'll be dark soon, and they mostly come at night. Mostly." Joel Becker Principal Software Developer Oracle E-mail: [email protected] Phone: (650) 506-8127