f2fs: check lower bound nid value in check_nid_range
Subsystems (2)
PATCH 1/3 f2fs: check lower bound nid value in check_nid_range
This patch add lower bound verification for nid in check_nid_range, so nids reserved like 0, node, meta passed by caller could be checked there.
And then check_nid_range could be used in f2fs_nfs_get_inode for simplifying code.
Signed-off-by Chao Yu <[email protected]>
--- fs/f2fs/f2fs.h | 3 ++- fs/f2fs/inode.c | 1 + fs/f2fs/super.c | 4 +--- 3 files changed, 4 insertions(+), 4 deletions(-)
fs/f2fs/f2fs.h +2 -1
@@ -641,7 +641,8 @@ static inline void f2fs_unlock_all(struct f2fs_sb_info *sbi)*/ static inline int check_nid_range (struct f2fs_sb_info *sbi,nid_t nid) { -WARN_ON ((nid >=NM_I (sbi)->max_nid)); +if (unlikely (nid <F2FS_ROOT_INO (sbi))) +return -EINVAL ;if (unlikely (nid >=NM_I (sbi)->max_nid))return -EINVAL ;return 0 ;
fs/f2fs/inode.c +1 -0
@@ -78,6 +78,7 @@ static int do_read_inode(struct inode *inode)if (check_nid_range (sbi, inode->i_ino)) {f2fs_msg (inode->i_sb,KERN_ERR ,"bad inode number: %lu" , (unsigned long ) inode->i_ino); +WARN_ON (1 );return -EINVAL ; }
fs/f2fs/super.c +1 -3
@@ -689,9 +689,7 @@ static struct inode *f2fs_nfs_get_inode(struct super_block *sb,struct f2fs_sb_info *sbi =F2FS_SB (sb);struct inode *inode; -if (unlikely (ino <F2FS_ROOT_INO (sbi))) -return ERR_PTR (-ESTALE ); -if (unlikely (ino >=NM_I (sbi)->max_nid)) +if (check_nid_range (sbi, ino))return ERR_PTR (-ESTALE );/*
Signature · 10 lines
1.7.9.5 ------------------------------------------------------------------------------ HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions Find What Matters Most in Your Big Data with HPCC Systems Open Source. Fast. Scalable. Simple. Ideal for Dirty Data. Leverages Graph Analysis for Fast Processing & Easy Data Exploration http://p.sf.net/sfu/hpccsystems