nilfs2: Don't load/check cp block if specified cno is larger than the largest exist one. nilfs2 would load invalid cp block, and report random inconsistent error message under this situation before.
Signed-off-by: Zhu Yanhai <[email protected]> --- fs/nilfs2/cpfile.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/nilfs2/cpfile.c b/fs/nilfs2/cpfile.c index aec942c..43978a9 100644 --- a/fs/nilfs2/cpfile.c +++ b/fs/nilfs2/cpfile.c @@ -814,9 +814,10 @@ int nilfs_cpfile_is_snapshot(struct inode *cpfile, __u64 cno) struct nilfs_checkpoint *cp; void *kaddr; int ret; - - if (cno == 0) - return -ENOENT; /* checkpoint number 0 is invalid */ + + /* return ENOENT if cno is invalid. */ + if (cno == 0 || cno >= nilfs_mdt_cno(cpfile)) + return -ENOENT; down_read(&NILFS_MDT(cpfile)->mi_sem); ret = nilfs_cpfile_get_checkpoint_block(cpfile, cno, 0, &bh); -- 1.6.2.2 _______________________________________________ users mailing list [email protected] https://www.nilfs.org/mailman/listinfo/users
