> > +int exfat_ent_get(struct super_block *sb, unsigned int loc, > > + unsigned int *content) > > +{ > > + struct exfat_sb_info *sbi = EXFAT_SB(sb); > > + int err; > > + > > + if (!is_valid_cluster(sbi, loc)) { > > + exfat_fs_error(sb, "invalid access to FAT (entry 0x%08x)", > > + loc); > > + return -EIO; > > + } > > + > > + err = __exfat_ent_get(sb, loc, content); > > + if (err) { > > + exfat_fs_error(sb, > > + "failed to access to FAT (entry 0x%08x, err:%d)", > > + loc, err); > > + return err; > > + } > > + > > + if (!is_reserved_cluster(*content) && > > + !is_valid_cluster(sbi, *content)) { > > + exfat_fs_error(sb, > > + "invalid access to FAT (entry 0x%08x) bogus content > (0x%08x)", > > + loc, *content); > > + return -EIO; > > + } > > + > > + if (*content == EXFAT_FREE_CLUSTER) { > > + exfat_fs_error(sb, > > + "invalid access to FAT free cluster (entry 0x%08x)", > > + loc); > > + return -EIO; > > + } > > + > > + if (*content == EXFAT_BAD_CLUSTER) { > > + exfat_fs_error(sb, > > + "invalid access to FAT bad cluster (entry 0x%08x)", > > + loc); > > + return -EIO; > > + } > > + return 0; > > Maybe these explicit checks should move up, and then is_reserved_cluster > can be replaced with an explicit check just for EXFAT_EOF_CLUSTER? Right, Will fix it on v10. > > Otherwise looks good: > > Reviewed-by: Christoph Hellwig <hch@xxxxxx> Thanks!