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

From: kernel test robot
Date: Fri Aug 21 2020 - 16:18:42 EST


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