Re: [PATCH v2 09/10] fs/ntfs3: Add NTFS3 in fs/Kconfig and fs/Makefile

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Konstantin,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linux/master]
[also build test WARNING on linus/master v5.9-rc1 next-20200821]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Konstantin-Komarov/fs-NTFS-read-write-driver-GPL-implementation-by-Paragon-Software/20200822-003353
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git bcf876870b95592b52519ed4aafcf9d95999bc9c
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sh 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

   fs/ntfs3/inode.c: In function 'ntfs_read_mft':
>> fs/ntfs3/inode.c:40:7: warning: variable 'is_encrypted' set but not used [-Wunused-but-set-variable]
      40 |  bool is_encrypted = false;
         |       ^~~~~~~~~~~~
--
   fs/ntfs3/fsntfs.c: In function 'ntfs_extend_init':
>> fs/ntfs3/fsntfs.c:171:14: warning: variable 'ni' set but not used [-Wunused-but-set-variable]
     171 |  ntfs_inode *ni;
         |              ^~
   fs/ntfs3/fsntfs.c: In function 'ntfs_loadlog_and_replay':
>> fs/ntfs3/fsntfs.c:241:11: warning: variable 'log_size' set but not used [-Wunused-but-set-variable]
     241 |  u32 idx, log_size;
         |           ^~~~~~~~
   fs/ntfs3/fsntfs.c: In function 'ntfs_insert_security':
>> fs/ntfs3/fsntfs.c:1764:6: warning: variable 'used' set but not used [-Wunused-but-set-variable]
    1764 |  u32 used, next, left;
         |      ^~~~
--
   fs/ntfs3/frecord.c: In function 'ni_ins_attr_ext':
>> fs/ntfs3/frecord.c:670:11: warning: variable 'rec' set but not used [-Wunused-but-set-variable]
     670 |  MFT_REC *rec;
         |           ^~~
--
   fs/ntfs3/index.c: In function 'indx_find_sort':
>> fs/ntfs3/index.c:1148:6: warning: variable 'err' set but not used [-Wunused-but-set-variable]
    1148 |  int err;
         |      ^~~
--
   fs/ntfs3/attrib.c: In function 'attr_set_size':
>> fs/ntfs3/attrib.c:478:10: warning: variable 'cnt' set but not used [-Wunused-but-set-variable]
     478 |   size_t cnt, free;
         |          ^~~
   fs/ntfs3/attrib.c: In function 'attr_data_get_block':
>> fs/ntfs3/attrib.c:769:28: warning: variable 'new_alloc' set but not used [-Wunused-but-set-variable]
     769 |  u64 new_size, total_size, new_alloc;
         |                            ^~~~~~~~~
--
   fs/ntfs3/super.c: In function 'ntfs_fill_super':
>> fs/ntfs3/super.c:831:16: warning: unsigned conversion from 'long long int' to 'long unsigned int' changes value from '220979426414' to '1936094318' [-Woverflow]
     831 |  sb->s_magic = 0x337366746e; // "ntfs3"
         |                ^~~~~~~~~~~~
--
   fs/ntfs3/fslog.c: In function 'log_replay':
>> fs/ntfs3/fslog.c:3895:7: warning: variable 'vbo_to_clear' set but not used [-Wunused-but-set-variable]
    3895 |   u32 vbo_to_clear = page_size * 2;
         |       ^~~~~~~~~~~~
>> fs/ntfs3/fslog.c:3894:8: warning: variable 'clear_log' set but not used [-Wunused-but-set-variable]
    3894 |   bool clear_log = true;
         |        ^~~~~~~~~
>> fs/ntfs3/fslog.c:3780:17: warning: variable 'clst_off' set but not used [-Wunused-but-set-variable]
    3780 |  u32 saved_len, clst_off, rec_len, transact_id;
         |                 ^~~~~~~~

# https://github.com/0day-ci/linux/commit/cc8413bd463338b0ad2b6369a619196d5b77798a
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Konstantin-Komarov/fs-NTFS-read-write-driver-GPL-implementation-by-Paragon-Software/20200822-003353
git checkout cc8413bd463338b0ad2b6369a619196d5b77798a
vim +/is_encrypted +40 fs/ntfs3/inode.c

9106c639ce09ddc Konstantin Komarov 2020-08-21   22  
9106c639ce09ddc Konstantin Komarov 2020-08-21   23  /*
9106c639ce09ddc Konstantin Komarov 2020-08-21   24   * ntfs_read_mft
9106c639ce09ddc Konstantin Komarov 2020-08-21   25   *
9106c639ce09ddc Konstantin Komarov 2020-08-21   26   * reads record and parses MFT
9106c639ce09ddc Konstantin Komarov 2020-08-21   27   */
9106c639ce09ddc Konstantin Komarov 2020-08-21   28  static struct inode *ntfs_read_mft(struct inode *inode,
9106c639ce09ddc Konstantin Komarov 2020-08-21   29  				   const struct cpu_str *name,
9106c639ce09ddc Konstantin Komarov 2020-08-21   30  				   const MFT_REF *ref)
9106c639ce09ddc Konstantin Komarov 2020-08-21   31  {
9106c639ce09ddc Konstantin Komarov 2020-08-21   32  	int err = 0;
9106c639ce09ddc Konstantin Komarov 2020-08-21   33  	ntfs_inode *ni = ntfs_i(inode);
9106c639ce09ddc Konstantin Komarov 2020-08-21   34  	struct super_block *sb = inode->i_sb;
9106c639ce09ddc Konstantin Komarov 2020-08-21   35  	ntfs_sb_info *sbi = sb->s_fs_info;
9106c639ce09ddc Konstantin Komarov 2020-08-21   36  	mode_t mode = 0;
9106c639ce09ddc Konstantin Komarov 2020-08-21   37  	ATTR_STD_INFO5 *std5 = NULL;
9106c639ce09ddc Konstantin Komarov 2020-08-21   38  	ATTR_LIST_ENTRY *le;
9106c639ce09ddc Konstantin Komarov 2020-08-21   39  	ATTRIB *attr;
9106c639ce09ddc Konstantin Komarov 2020-08-21  @40  	bool is_encrypted = false;
9106c639ce09ddc Konstantin Komarov 2020-08-21   41  	bool is_match = false;
9106c639ce09ddc Konstantin Komarov 2020-08-21   42  	bool is_root = false;
9106c639ce09ddc Konstantin Komarov 2020-08-21   43  	bool is_dir;
9106c639ce09ddc Konstantin Komarov 2020-08-21   44  	unsigned long ino = inode->i_ino;
9106c639ce09ddc Konstantin Komarov 2020-08-21   45  	u32 rp_fa = 0, asize, t32;
9106c639ce09ddc Konstantin Komarov 2020-08-21   46  	u16 roff, rsize, names = 0;
9106c639ce09ddc Konstantin Komarov 2020-08-21   47  	const ATTR_FILE_NAME *fname = NULL;
9106c639ce09ddc Konstantin Komarov 2020-08-21   48  	const INDEX_ROOT *root;
9106c639ce09ddc Konstantin Komarov 2020-08-21   49  	REPARSE_DATA_BUFFER rp; // 0x18 bytes
9106c639ce09ddc Konstantin Komarov 2020-08-21   50  	u64 t64;
9106c639ce09ddc Konstantin Komarov 2020-08-21   51  	MFT_REC *rec;
9106c639ce09ddc Konstantin Komarov 2020-08-21   52  	struct runs_tree *run;
9106c639ce09ddc Konstantin Komarov 2020-08-21   53  
9106c639ce09ddc Konstantin Komarov 2020-08-21   54  	inode->i_op = NULL;
9106c639ce09ddc Konstantin Komarov 2020-08-21   55  
9106c639ce09ddc Konstantin Komarov 2020-08-21   56  	err = mi_init(&ni->mi, sbi, ino);
9106c639ce09ddc Konstantin Komarov 2020-08-21   57  	if (err)
9106c639ce09ddc Konstantin Komarov 2020-08-21   58  		goto out;
9106c639ce09ddc Konstantin Komarov 2020-08-21   59  
9106c639ce09ddc Konstantin Komarov 2020-08-21   60  	if (!sbi->mft.ni && ino == MFT_REC_MFT && !sb->s_root) {
9106c639ce09ddc Konstantin Komarov 2020-08-21   61  		t64 = sbi->mft.lbo >> sbi->cluster_bits;
9106c639ce09ddc Konstantin Komarov 2020-08-21   62  		t32 = bytes_to_cluster(sbi, MFT_REC_VOL * sbi->record_size);
9106c639ce09ddc Konstantin Komarov 2020-08-21   63  		sbi->mft.ni = ni;
9106c639ce09ddc Konstantin Komarov 2020-08-21   64  		init_rwsem(&ni->file.run_lock);
9106c639ce09ddc Konstantin Komarov 2020-08-21   65  
9106c639ce09ddc Konstantin Komarov 2020-08-21   66  		if (!run_add_entry(&ni->file.run, 0, t64, t32)) {
9106c639ce09ddc Konstantin Komarov 2020-08-21   67  			err = -ENOMEM;
9106c639ce09ddc Konstantin Komarov 2020-08-21   68  			goto out;
9106c639ce09ddc Konstantin Komarov 2020-08-21   69  		}
9106c639ce09ddc Konstantin Komarov 2020-08-21   70  	}
9106c639ce09ddc Konstantin Komarov 2020-08-21   71  
9106c639ce09ddc Konstantin Komarov 2020-08-21   72  	err = mi_read(&ni->mi, ino == MFT_REC_MFT);
9106c639ce09ddc Konstantin Komarov 2020-08-21   73  
9106c639ce09ddc Konstantin Komarov 2020-08-21   74  	if (err)
9106c639ce09ddc Konstantin Komarov 2020-08-21   75  		goto out;
9106c639ce09ddc Konstantin Komarov 2020-08-21   76  
9106c639ce09ddc Konstantin Komarov 2020-08-21   77  	rec = ni->mi.mrec;
9106c639ce09ddc Konstantin Komarov 2020-08-21   78  
9106c639ce09ddc Konstantin Komarov 2020-08-21   79  	if (sbi->flags & NTFS_FLAGS_LOG_REPLAING)
9106c639ce09ddc Konstantin Komarov 2020-08-21   80  		;
9106c639ce09ddc Konstantin Komarov 2020-08-21   81  	else if (ref->seq != rec->seq) {
9106c639ce09ddc Konstantin Komarov 2020-08-21   82  		err = -EINVAL;
9106c639ce09ddc Konstantin Komarov 2020-08-21   83  		ntfs_error(sb, "MFT: r=%lx, expect seq=%x instead of %x!", ino,
9106c639ce09ddc Konstantin Komarov 2020-08-21   84  			   le16_to_cpu(ref->seq), le16_to_cpu(rec->seq));
9106c639ce09ddc Konstantin Komarov 2020-08-21   85  		goto out;
9106c639ce09ddc Konstantin Komarov 2020-08-21   86  	} else if (!is_rec_inuse(rec)) {
9106c639ce09ddc Konstantin Komarov 2020-08-21   87  		err = -EINVAL;
9106c639ce09ddc Konstantin Komarov 2020-08-21   88  		ntfs_error(sb, "Inode r=%x is not in use!", (u32)ino);
9106c639ce09ddc Konstantin Komarov 2020-08-21   89  		goto out;
9106c639ce09ddc Konstantin Komarov 2020-08-21   90  	}
9106c639ce09ddc Konstantin Komarov 2020-08-21   91  
9106c639ce09ddc Konstantin Komarov 2020-08-21   92  	if (le32_to_cpu(rec->total) != sbi->record_size) {
9106c639ce09ddc Konstantin Komarov 2020-08-21   93  		// bad inode?
9106c639ce09ddc Konstantin Komarov 2020-08-21   94  		err = -EINVAL;
9106c639ce09ddc Konstantin Komarov 2020-08-21   95  		goto out;
9106c639ce09ddc Konstantin Komarov 2020-08-21   96  	}
9106c639ce09ddc Konstantin Komarov 2020-08-21   97  
9106c639ce09ddc Konstantin Komarov 2020-08-21   98  	if (!is_rec_base(rec))
9106c639ce09ddc Konstantin Komarov 2020-08-21   99  		goto Ok;
9106c639ce09ddc Konstantin Komarov 2020-08-21  100  
9106c639ce09ddc Konstantin Komarov 2020-08-21  101  	/* record should contain $I30 root */
9106c639ce09ddc Konstantin Komarov 2020-08-21  102  	is_dir = rec->flags & RECORD_FLAG_DIR;
9106c639ce09ddc Konstantin Komarov 2020-08-21  103  
9106c639ce09ddc Konstantin Komarov 2020-08-21  104  	inode->i_generation = le16_to_cpu(rec->seq);
9106c639ce09ddc Konstantin Komarov 2020-08-21  105  
9106c639ce09ddc Konstantin Komarov 2020-08-21  106  	/* Enumerate all struct Attributes MFT */
9106c639ce09ddc Konstantin Komarov 2020-08-21  107  	le = NULL;
9106c639ce09ddc Konstantin Komarov 2020-08-21  108  	attr = NULL;
9106c639ce09ddc Konstantin Komarov 2020-08-21  109  next_attr:
9106c639ce09ddc Konstantin Komarov 2020-08-21  110  	err = -EINVAL;
9106c639ce09ddc Konstantin Komarov 2020-08-21  111  	attr = ni_enum_attr_ex(ni, attr, &le);
9106c639ce09ddc Konstantin Komarov 2020-08-21  112  	if (!attr)
9106c639ce09ddc Konstantin Komarov 2020-08-21  113  		goto end_enum;
9106c639ce09ddc Konstantin Komarov 2020-08-21  114  
9106c639ce09ddc Konstantin Komarov 2020-08-21  115  	if (le && le->vcn) {
9106c639ce09ddc Konstantin Komarov 2020-08-21  116  		if (ino == MFT_REC_MFT && attr->type == ATTR_DATA) {
9106c639ce09ddc Konstantin Komarov 2020-08-21  117  			run = &ni->file.run;
9106c639ce09ddc Konstantin Komarov 2020-08-21  118  			asize = le32_to_cpu(attr->size);
9106c639ce09ddc Konstantin Komarov 2020-08-21  119  			goto attr_unpack_run;
9106c639ce09ddc Konstantin Komarov 2020-08-21  120  		}
9106c639ce09ddc Konstantin Komarov 2020-08-21  121  		goto next_attr;
9106c639ce09ddc Konstantin Komarov 2020-08-21  122  	}
9106c639ce09ddc Konstantin Komarov 2020-08-21  123  
9106c639ce09ddc Konstantin Komarov 2020-08-21  124  	roff = attr->non_res ? 0 : le16_to_cpu(attr->res.data_off);
9106c639ce09ddc Konstantin Komarov 2020-08-21  125  	rsize = attr->non_res ? 0 : le32_to_cpu(attr->res.data_size);
9106c639ce09ddc Konstantin Komarov 2020-08-21  126  	asize = le32_to_cpu(attr->size);
9106c639ce09ddc Konstantin Komarov 2020-08-21  127  
9106c639ce09ddc Konstantin Komarov 2020-08-21  128  	if (attr->type != ATTR_STD)
9106c639ce09ddc Konstantin Komarov 2020-08-21  129  		goto check_list;
9106c639ce09ddc Konstantin Komarov 2020-08-21  130  
9106c639ce09ddc Konstantin Komarov 2020-08-21  131  	if (attr->non_res)
9106c639ce09ddc Konstantin Komarov 2020-08-21  132  		goto out;
9106c639ce09ddc Konstantin Komarov 2020-08-21  133  
9106c639ce09ddc Konstantin Komarov 2020-08-21  134  	if (asize < sizeof(ATTR_STD_INFO) + roff)
9106c639ce09ddc Konstantin Komarov 2020-08-21  135  		goto out;
9106c639ce09ddc Konstantin Komarov 2020-08-21  136  	if (rsize < sizeof(ATTR_STD_INFO))
9106c639ce09ddc Konstantin Komarov 2020-08-21  137  		goto out;
9106c639ce09ddc Konstantin Komarov 2020-08-21  138  
9106c639ce09ddc Konstantin Komarov 2020-08-21  139  	if (std5)
9106c639ce09ddc Konstantin Komarov 2020-08-21  140  		goto next_attr;
9106c639ce09ddc Konstantin Komarov 2020-08-21  141  
9106c639ce09ddc Konstantin Komarov 2020-08-21  142  	std5 = Add2Ptr(attr, roff);
9106c639ce09ddc Konstantin Komarov 2020-08-21  143  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux