diff --git a/fs/ntfs3/inode.c b/fs/ntfs3/inode.c index 15bf7044e5aa..aca2ad950d95 100644 --- a/fs/ntfs3/inode.c +++ b/fs/ntfs3/inode.c @@ -127,10 +127,16 @@ static struct inode *ntfs_read_mft(struct inode *inode, if (le && le->vcn) { /* This is non primary attribute segment. Ignore if not MFT. */ - if (ino != MFT_REC_MFT || attr->type != ATTR_DATA) + if (ino != MFT_REC_MFT) + goto next_attr; + + if (attr->type == ATTR_DATA) + run = &ni->file.run; + else if (attr->type == ATTR_BITMAP) + run = &sbi->mft.bitmap.run; + else goto next_attr; - run = &ni->file.run; asize = le32_to_cpu(attr->size); goto attr_unpack_run; }