|
@@ -69,25 +69,26 @@ int ext3_check_dir_entry (const char * function, struct inode * dir,
|
|
|
const char * error_msg = NULL;
|
|
|
const int rlen = ext3_rec_len_from_disk(de->rec_len);
|
|
|
|
|
|
- if (rlen < EXT3_DIR_REC_LEN(1))
|
|
|
+ if (unlikely(rlen < EXT3_DIR_REC_LEN(1)))
|
|
|
error_msg = "rec_len is smaller than minimal";
|
|
|
- else if (rlen % 4 != 0)
|
|
|
+ else if (unlikely(rlen % 4 != 0))
|
|
|
error_msg = "rec_len % 4 != 0";
|
|
|
- else if (rlen < EXT3_DIR_REC_LEN(de->name_len))
|
|
|
+ else if (unlikely(rlen < EXT3_DIR_REC_LEN(de->name_len)))
|
|
|
error_msg = "rec_len is too small for name_len";
|
|
|
- else if (((char *) de - bh->b_data) + rlen > dir->i_sb->s_blocksize)
|
|
|
+ else if (unlikely((((char *) de - bh->b_data) + rlen > dir->i_sb->s_blocksize)))
|
|
|
error_msg = "directory entry across blocks";
|
|
|
- else if (le32_to_cpu(de->inode) >
|
|
|
- le32_to_cpu(EXT3_SB(dir->i_sb)->s_es->s_inodes_count))
|
|
|
+ else if (unlikely(le32_to_cpu(de->inode) >
|
|
|
+ le32_to_cpu(EXT3_SB(dir->i_sb)->s_es->s_inodes_count)))
|
|
|
error_msg = "inode out of bounds";
|
|
|
|
|
|
- if (error_msg != NULL)
|
|
|
+ if (unlikely(error_msg != NULL))
|
|
|
ext3_error (dir->i_sb, function,
|
|
|
"bad entry in directory #%lu: %s - "
|
|
|
"offset=%lu, inode=%lu, rec_len=%d, name_len=%d",
|
|
|
dir->i_ino, error_msg, offset,
|
|
|
(unsigned long) le32_to_cpu(de->inode),
|
|
|
rlen, de->name_len);
|
|
|
+
|
|
|
return error_msg == NULL ? 1 : 0;
|
|
|
}
|
|
|
|