Merge tag 'f2fs-for-5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk...
[linux-2.6-block.git] / fs / f2fs / inode.c
index d910a820ae675cd19de332df5d296225eb9aa86a..e7f2e8759315636431ae7795be7cbe002b155fc4 100644 (file)
@@ -14,6 +14,7 @@
 #include "f2fs.h"
 #include "node.h"
 #include "segment.h"
+#include "xattr.h"
 
 #include <trace/events/f2fs.h>
 
@@ -248,6 +249,20 @@ static bool sanity_check_inode(struct inode *inode, struct page *node_page)
                return false;
        }
 
+       if (f2fs_has_extra_attr(inode) &&
+               f2fs_sb_has_flexible_inline_xattr(sbi) &&
+               f2fs_has_inline_xattr(inode) &&
+               (!fi->i_inline_xattr_size ||
+               fi->i_inline_xattr_size > MAX_INLINE_XATTR_SIZE)) {
+               set_sbi_flag(sbi, SBI_NEED_FSCK);
+               f2fs_msg(sbi->sb, KERN_WARNING,
+                       "%s: inode (ino=%lx) has corrupted "
+                       "i_inline_xattr_size: %d, max: %zu",
+                       __func__, inode->i_ino, fi->i_inline_xattr_size,
+                       MAX_INLINE_XATTR_SIZE);
+               return false;
+       }
+
        if (F2FS_I(inode)->extent_tree) {
                struct extent_info *ei = &F2FS_I(inode)->extent_tree->largest;