f2fs: fix to do sanity check on destination blkaddr during recovery
[linux-2.6-microblaze.git] / fs / f2fs / recovery.c
index dcd0a1e..8326003 100644 (file)
@@ -698,6 +698,14 @@ retry_prev:
                                goto err;
                        }
 
+                       if (f2fs_is_valid_blkaddr(sbi, dest,
+                                       DATA_GENERIC_ENHANCE_UPDATE)) {
+                               f2fs_err(sbi, "Inconsistent dest blkaddr:%u, ino:%lu, ofs:%u",
+                                       dest, inode->i_ino, dn.ofs_in_node);
+                               err = -EFSCORRUPTED;
+                               goto err;
+                       }
+
                        /* write dummy data page */
                        f2fs_replace_block(sbi, &dn, src, dest,
                                                ni.version, false, false);