@@ -57,6 +57,10 @@ long ntfs_ioctl(struct file *filp, u32 cmd, unsigned long arg)
5757 struct inode * inode = file_inode (filp );
5858 struct ntfs_sb_info * sbi = inode -> i_sb -> s_fs_info ;
5959
60+ /* Avoid any operation if inode is bad. */
61+ if (unlikely (is_bad_ni (ntfs_i (inode ))))
62+ return - EINVAL ;
63+
6064 switch (cmd ) {
6165 case FITRIM :
6266 return ntfs_ioctl_fitrim (sbi , arg );
@@ -81,6 +85,10 @@ int ntfs_getattr(struct mnt_idmap *idmap, const struct path *path,
8185 struct inode * inode = d_inode (path -> dentry );
8286 struct ntfs_inode * ni = ntfs_i (inode );
8387
88+ /* Avoid any operation if inode is bad. */
89+ if (unlikely (is_bad_ni (ni )))
90+ return - EINVAL ;
91+
8492 stat -> result_mask |= STATX_BTIME ;
8593 stat -> btime = ni -> i_crtime ;
8694 stat -> blksize = ni -> mi .sbi -> cluster_size ; /* 512, 1K, ..., 2M */
@@ -271,6 +279,10 @@ static int ntfs_file_mmap(struct file *file, struct vm_area_struct *vma)
271279 bool rw = vma -> vm_flags & VM_WRITE ;
272280 int err ;
273281
282+ /* Avoid any operation if inode is bad. */
283+ if (unlikely (is_bad_ni (ni )))
284+ return - EINVAL ;
285+
274286 if (unlikely (ntfs3_forced_shutdown (inode -> i_sb )))
275287 return - EIO ;
276288
@@ -735,6 +747,10 @@ int ntfs_setattr(struct mnt_idmap *idmap, struct dentry *dentry,
735747 umode_t mode = inode -> i_mode ;
736748 int err ;
737749
750+ /* Avoid any operation if inode is bad. */
751+ if (unlikely (is_bad_ni (ni )))
752+ return - EINVAL ;
753+
738754 if (unlikely (ntfs3_forced_shutdown (inode -> i_sb )))
739755 return - EIO ;
740756
@@ -795,6 +811,10 @@ static int check_read_restriction(struct inode *inode)
795811{
796812 struct ntfs_inode * ni = ntfs_i (inode );
797813
814+ /* Avoid any operation if inode is bad. */
815+ if (unlikely (is_bad_ni (ni )))
816+ return - EINVAL ;
817+
798818 if (unlikely (ntfs3_forced_shutdown (inode -> i_sb )))
799819 return - EIO ;
800820
@@ -1130,6 +1150,10 @@ static int check_write_restriction(struct inode *inode)
11301150{
11311151 struct ntfs_inode * ni = ntfs_i (inode );
11321152
1153+ /* Avoid any operation if inode is bad. */
1154+ if (unlikely (is_bad_ni (ni )))
1155+ return - EINVAL ;
1156+
11331157 if (unlikely (ntfs3_forced_shutdown (inode -> i_sb )))
11341158 return - EIO ;
11351159
@@ -1212,6 +1236,10 @@ int ntfs_file_open(struct inode *inode, struct file *file)
12121236{
12131237 struct ntfs_inode * ni = ntfs_i (inode );
12141238
1239+ /* Avoid any operation if inode is bad. */
1240+ if (unlikely (is_bad_ni (ni )))
1241+ return - EINVAL ;
1242+
12151243 if (unlikely (ntfs3_forced_shutdown (inode -> i_sb )))
12161244 return - EIO ;
12171245
@@ -1281,6 +1309,10 @@ int ntfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
12811309 int err ;
12821310 struct ntfs_inode * ni = ntfs_i (inode );
12831311
1312+ /* Avoid any operation if inode is bad. */
1313+ if (unlikely (is_bad_ni (ni )))
1314+ return - EINVAL ;
1315+
12841316 err = fiemap_prep (inode , fieinfo , start , & len , ~FIEMAP_FLAG_XATTR );
12851317 if (err )
12861318 return err ;
0 commit comments