From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v13 09/10] fs/ntfs3: Add NTFS3 in fs/Kconfig and fs/Makefile
Date: Sat, 21 Nov 2020 03:42:31 +0800 [thread overview]
Message-ID: <202011210303.GSSFlYcw-lkp@intel.com> (raw)
In-Reply-To: <20201120160944.1629091-10-almaz.alexandrovich@paragon-software.com>
[-- Attachment #1: Type: text/plain, Size: 16388 bytes --]
Hi Konstantin,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.10-rc4 next-20201120]
[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/NTFS-read-write-driver-GPL-implementation-by-Paragon-Software/20201121-001320
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 4d02da974ea85a62074efedf354e82778f910d82
config: arm64-randconfig-s031-20201120 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-134-gb59dbdaf-dirty
# https://github.com/0day-ci/linux/commit/af7bf0c625d20c0ebe8b4c180b4422b2a37a9dd5
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Konstantin-Komarov/NTFS-read-write-driver-GPL-implementation-by-Paragon-Software/20201121-001320
git checkout af7bf0c625d20c0ebe8b4c180b4422b2a37a9dd5
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
"sparse warnings: (new ones prefixed by >>)"
>> fs/ntfs3/super.c:1251:34: sparse: sparse: cast to restricted __le16
>> fs/ntfs3/super.c:1251:34: sparse: sparse: cast to restricted __le16
>> fs/ntfs3/super.c:1251:34: sparse: sparse: cast to restricted __le16
>> fs/ntfs3/super.c:1251:34: sparse: sparse: cast to restricted __le16
vim +1251 fs/ntfs3/super.c
c7374db749d575f Konstantin Komarov 2020-11-20 1132
c7374db749d575f Konstantin Komarov 2020-11-20 1133 /* Check bitmap boundary */
c7374db749d575f Konstantin Komarov 2020-11-20 1134 tt = sbi->used.bitmap.nbits;
c7374db749d575f Konstantin Komarov 2020-11-20 1135 if (inode->i_size < bitmap_size(tt)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1136 err = -EINVAL;
c7374db749d575f Konstantin Komarov 2020-11-20 1137 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1138 }
c7374db749d575f Konstantin Komarov 2020-11-20 1139
c7374db749d575f Konstantin Komarov 2020-11-20 1140 /* Not necessary */
c7374db749d575f Konstantin Komarov 2020-11-20 1141 sbi->used.bitmap.set_tail = true;
c7374db749d575f Konstantin Komarov 2020-11-20 1142 err = wnd_init(&sbi->used.bitmap, sbi->sb, tt);
c7374db749d575f Konstantin Komarov 2020-11-20 1143 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1144 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1145
c7374db749d575f Konstantin Komarov 2020-11-20 1146 iput(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1147
c7374db749d575f Konstantin Komarov 2020-11-20 1148 /* Compute the mft zone */
c7374db749d575f Konstantin Komarov 2020-11-20 1149 err = ntfs_refresh_zone(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1150 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1151 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1152
c7374db749d575f Konstantin Komarov 2020-11-20 1153 /* Load $AttrDef */
c7374db749d575f Konstantin Komarov 2020-11-20 1154 ref.low = cpu_to_le32(MFT_REC_ATTR);
c7374db749d575f Konstantin Komarov 2020-11-20 1155 ref.seq = cpu_to_le16(MFT_REC_ATTR);
c7374db749d575f Konstantin Komarov 2020-11-20 1156 inode = ntfs_iget5(sbi->sb, &ref, &NAME_ATTRDEF);
c7374db749d575f Konstantin Komarov 2020-11-20 1157 if (IS_ERR(inode)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1158 err = PTR_ERR(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1159 ntfs_err(sb, "Failed to load $AttrDef -> %d", err);
c7374db749d575f Konstantin Komarov 2020-11-20 1160 inode = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1161 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1162 }
c7374db749d575f Konstantin Komarov 2020-11-20 1163
c7374db749d575f Konstantin Komarov 2020-11-20 1164 if (inode->i_size < sizeof(struct ATTR_DEF_ENTRY)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1165 err = -EINVAL;
c7374db749d575f Konstantin Komarov 2020-11-20 1166 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1167 }
c7374db749d575f Konstantin Komarov 2020-11-20 1168 bytes = inode->i_size;
c7374db749d575f Konstantin Komarov 2020-11-20 1169 sbi->def_table = t = ntfs_alloc(bytes, 0);
c7374db749d575f Konstantin Komarov 2020-11-20 1170 if (!t) {
c7374db749d575f Konstantin Komarov 2020-11-20 1171 err = -ENOMEM;
c7374db749d575f Konstantin Komarov 2020-11-20 1172 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1173 }
c7374db749d575f Konstantin Komarov 2020-11-20 1174
c7374db749d575f Konstantin Komarov 2020-11-20 1175 for (done = idx = 0; done < bytes; done += PAGE_SIZE, idx++) {
c7374db749d575f Konstantin Komarov 2020-11-20 1176 unsigned long tail = bytes - done;
c7374db749d575f Konstantin Komarov 2020-11-20 1177 struct page *page = ntfs_map_page(inode->i_mapping, idx);
c7374db749d575f Konstantin Komarov 2020-11-20 1178
c7374db749d575f Konstantin Komarov 2020-11-20 1179 if (IS_ERR(page)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1180 err = PTR_ERR(page);
c7374db749d575f Konstantin Komarov 2020-11-20 1181 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1182 }
c7374db749d575f Konstantin Komarov 2020-11-20 1183 memcpy(Add2Ptr(t, done), page_address(page),
c7374db749d575f Konstantin Komarov 2020-11-20 1184 min(PAGE_SIZE, tail));
c7374db749d575f Konstantin Komarov 2020-11-20 1185 ntfs_unmap_page(page);
c7374db749d575f Konstantin Komarov 2020-11-20 1186
c7374db749d575f Konstantin Komarov 2020-11-20 1187 if (!idx && ATTR_STD != t->type) {
c7374db749d575f Konstantin Komarov 2020-11-20 1188 err = -EINVAL;
c7374db749d575f Konstantin Komarov 2020-11-20 1189 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1190 }
c7374db749d575f Konstantin Komarov 2020-11-20 1191 }
c7374db749d575f Konstantin Komarov 2020-11-20 1192
c7374db749d575f Konstantin Komarov 2020-11-20 1193 t += 1;
c7374db749d575f Konstantin Komarov 2020-11-20 1194 sbi->def_entries = 1;
c7374db749d575f Konstantin Komarov 2020-11-20 1195 done = sizeof(struct ATTR_DEF_ENTRY);
c7374db749d575f Konstantin Komarov 2020-11-20 1196 sbi->reparse.max_size = MAXIMUM_REPARSE_DATA_BUFFER_SIZE;
c7374db749d575f Konstantin Komarov 2020-11-20 1197
c7374db749d575f Konstantin Komarov 2020-11-20 1198 while (done + sizeof(struct ATTR_DEF_ENTRY) <= bytes) {
c7374db749d575f Konstantin Komarov 2020-11-20 1199 u32 t32 = le32_to_cpu(t->type);
c7374db749d575f Konstantin Komarov 2020-11-20 1200
c7374db749d575f Konstantin Komarov 2020-11-20 1201 if ((t32 & 0xF) || le32_to_cpu(t[-1].type) >= t32)
c7374db749d575f Konstantin Komarov 2020-11-20 1202 break;
c7374db749d575f Konstantin Komarov 2020-11-20 1203
c7374db749d575f Konstantin Komarov 2020-11-20 1204 if (t->type == ATTR_REPARSE)
c7374db749d575f Konstantin Komarov 2020-11-20 1205 sbi->reparse.max_size = le64_to_cpu(t->max_sz);
c7374db749d575f Konstantin Komarov 2020-11-20 1206
c7374db749d575f Konstantin Komarov 2020-11-20 1207 done += sizeof(struct ATTR_DEF_ENTRY);
c7374db749d575f Konstantin Komarov 2020-11-20 1208 t += 1;
c7374db749d575f Konstantin Komarov 2020-11-20 1209 sbi->def_entries += 1;
c7374db749d575f Konstantin Komarov 2020-11-20 1210 }
c7374db749d575f Konstantin Komarov 2020-11-20 1211 iput(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1212
c7374db749d575f Konstantin Komarov 2020-11-20 1213 /* Load $UpCase */
c7374db749d575f Konstantin Komarov 2020-11-20 1214 ref.low = cpu_to_le32(MFT_REC_UPCASE);
c7374db749d575f Konstantin Komarov 2020-11-20 1215 ref.seq = cpu_to_le16(MFT_REC_UPCASE);
c7374db749d575f Konstantin Komarov 2020-11-20 1216 inode = ntfs_iget5(sb, &ref, &NAME_UPCASE);
c7374db749d575f Konstantin Komarov 2020-11-20 1217 if (IS_ERR(inode)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1218 err = PTR_ERR(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1219 ntfs_err(sb, "Failed to load $LogFile.");
c7374db749d575f Konstantin Komarov 2020-11-20 1220 inode = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1221 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1222 }
c7374db749d575f Konstantin Komarov 2020-11-20 1223
c7374db749d575f Konstantin Komarov 2020-11-20 1224 ni = ntfs_i(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1225
c7374db749d575f Konstantin Komarov 2020-11-20 1226 if (inode->i_size != 0x10000 * sizeof(short)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1227 err = -EINVAL;
c7374db749d575f Konstantin Komarov 2020-11-20 1228 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1229 }
c7374db749d575f Konstantin Komarov 2020-11-20 1230
c7374db749d575f Konstantin Komarov 2020-11-20 1231 sbi->upcase = upcase = ntfs_alloc(0x10000 * sizeof(short), 0);
c7374db749d575f Konstantin Komarov 2020-11-20 1232 if (!upcase) {
c7374db749d575f Konstantin Komarov 2020-11-20 1233 err = -ENOMEM;
c7374db749d575f Konstantin Komarov 2020-11-20 1234 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1235 }
c7374db749d575f Konstantin Komarov 2020-11-20 1236
c7374db749d575f Konstantin Komarov 2020-11-20 1237 for (idx = 0; idx < (0x10000 * sizeof(short) >> PAGE_SHIFT); idx++) {
c7374db749d575f Konstantin Komarov 2020-11-20 1238 const u16 *src;
c7374db749d575f Konstantin Komarov 2020-11-20 1239 u16 *dst = Add2Ptr(upcase, idx << PAGE_SHIFT);
c7374db749d575f Konstantin Komarov 2020-11-20 1240 struct page *page = ntfs_map_page(inode->i_mapping, idx);
c7374db749d575f Konstantin Komarov 2020-11-20 1241
c7374db749d575f Konstantin Komarov 2020-11-20 1242 if (IS_ERR(page)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1243 err = PTR_ERR(page);
c7374db749d575f Konstantin Komarov 2020-11-20 1244 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1245 }
c7374db749d575f Konstantin Komarov 2020-11-20 1246
c7374db749d575f Konstantin Komarov 2020-11-20 1247 src = page_address(page);
c7374db749d575f Konstantin Komarov 2020-11-20 1248
c7374db749d575f Konstantin Komarov 2020-11-20 1249 #ifdef __BIG_ENDIAN
c7374db749d575f Konstantin Komarov 2020-11-20 1250 for (i = 0; i < PAGE_SIZE / sizeof(u16); i++)
c7374db749d575f Konstantin Komarov 2020-11-20 @1251 *dst++ = le16_to_cpu(*src++);
c7374db749d575f Konstantin Komarov 2020-11-20 1252 #else
c7374db749d575f Konstantin Komarov 2020-11-20 1253 memcpy(dst, src, PAGE_SIZE);
c7374db749d575f Konstantin Komarov 2020-11-20 1254 #endif
c7374db749d575f Konstantin Komarov 2020-11-20 1255 ntfs_unmap_page(page);
c7374db749d575f Konstantin Komarov 2020-11-20 1256 }
c7374db749d575f Konstantin Komarov 2020-11-20 1257
c7374db749d575f Konstantin Komarov 2020-11-20 1258 shared = ntfs_set_shared(upcase, 0x10000 * sizeof(short));
c7374db749d575f Konstantin Komarov 2020-11-20 1259 if (shared && upcase != shared) {
c7374db749d575f Konstantin Komarov 2020-11-20 1260 sbi->upcase = shared;
c7374db749d575f Konstantin Komarov 2020-11-20 1261 ntfs_free(upcase);
c7374db749d575f Konstantin Komarov 2020-11-20 1262 }
c7374db749d575f Konstantin Komarov 2020-11-20 1263
c7374db749d575f Konstantin Komarov 2020-11-20 1264 iput(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1265 inode = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1266
c7374db749d575f Konstantin Komarov 2020-11-20 1267 if (is_ntfs3(sbi)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1268 /* Load $Secure */
c7374db749d575f Konstantin Komarov 2020-11-20 1269 err = ntfs_security_init(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1270 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1271 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1272
c7374db749d575f Konstantin Komarov 2020-11-20 1273 /* Load $Extend */
c7374db749d575f Konstantin Komarov 2020-11-20 1274 err = ntfs_extend_init(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1275 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1276 goto load_root;
c7374db749d575f Konstantin Komarov 2020-11-20 1277
c7374db749d575f Konstantin Komarov 2020-11-20 1278 /* Load $Extend\$Reparse */
c7374db749d575f Konstantin Komarov 2020-11-20 1279 err = ntfs_reparse_init(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1280 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1281 goto load_root;
c7374db749d575f Konstantin Komarov 2020-11-20 1282
c7374db749d575f Konstantin Komarov 2020-11-20 1283 /* Load $Extend\$ObjId */
c7374db749d575f Konstantin Komarov 2020-11-20 1284 err = ntfs_objid_init(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1285 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1286 goto load_root;
c7374db749d575f Konstantin Komarov 2020-11-20 1287 }
c7374db749d575f Konstantin Komarov 2020-11-20 1288
c7374db749d575f Konstantin Komarov 2020-11-20 1289 load_root:
c7374db749d575f Konstantin Komarov 2020-11-20 1290
c7374db749d575f Konstantin Komarov 2020-11-20 1291 /* Load root */
c7374db749d575f Konstantin Komarov 2020-11-20 1292 ref.low = cpu_to_le32(MFT_REC_ROOT);
c7374db749d575f Konstantin Komarov 2020-11-20 1293 ref.seq = cpu_to_le16(MFT_REC_ROOT);
c7374db749d575f Konstantin Komarov 2020-11-20 1294 inode = ntfs_iget5(sb, &ref, &NAME_ROOT);
c7374db749d575f Konstantin Komarov 2020-11-20 1295 if (IS_ERR(inode)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1296 err = PTR_ERR(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1297 ntfs_err(sb, "Failed to load root.");
c7374db749d575f Konstantin Komarov 2020-11-20 1298 inode = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1299 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1300 }
c7374db749d575f Konstantin Komarov 2020-11-20 1301
c7374db749d575f Konstantin Komarov 2020-11-20 1302 ni = ntfs_i(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1303
c7374db749d575f Konstantin Komarov 2020-11-20 1304 sb->s_root = d_make_root(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1305
c7374db749d575f Konstantin Komarov 2020-11-20 1306 if (!sb->s_root) {
c7374db749d575f Konstantin Komarov 2020-11-20 1307 err = -EINVAL;
c7374db749d575f Konstantin Komarov 2020-11-20 1308 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1309 }
c7374db749d575f Konstantin Komarov 2020-11-20 1310
c7374db749d575f Konstantin Komarov 2020-11-20 1311 return 0;
c7374db749d575f Konstantin Komarov 2020-11-20 1312
c7374db749d575f Konstantin Komarov 2020-11-20 1313 out:
c7374db749d575f Konstantin Komarov 2020-11-20 1314 iput(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1315
c7374db749d575f Konstantin Komarov 2020-11-20 1316 if (sb->s_root) {
c7374db749d575f Konstantin Komarov 2020-11-20 1317 d_drop(sb->s_root);
c7374db749d575f Konstantin Komarov 2020-11-20 1318 sb->s_root = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1319 }
c7374db749d575f Konstantin Komarov 2020-11-20 1320
c7374db749d575f Konstantin Komarov 2020-11-20 1321 put_ntfs(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1322
c7374db749d575f Konstantin Komarov 2020-11-20 1323 sb->s_fs_info = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1324 return err;
c7374db749d575f Konstantin Komarov 2020-11-20 1325 }
c7374db749d575f Konstantin Komarov 2020-11-20 1326
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 40872 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
linux-fsdevel@vger.kernel.org
Cc: kbuild-all@lists.01.org, viro@zeniv.linux.org.uk,
linux-kernel@vger.kernel.org, pali@kernel.org, dsterba@suse.cz,
aaptel@suse.com, willy@infradead.org, rdunlap@infradead.org,
joe@perches.com, mark@harmstone.com
Subject: Re: [PATCH v13 09/10] fs/ntfs3: Add NTFS3 in fs/Kconfig and fs/Makefile
Date: Sat, 21 Nov 2020 03:42:31 +0800 [thread overview]
Message-ID: <202011210303.GSSFlYcw-lkp@intel.com> (raw)
In-Reply-To: <20201120160944.1629091-10-almaz.alexandrovich@paragon-software.com>
[-- Attachment #1: Type: text/plain, Size: 16149 bytes --]
Hi Konstantin,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on v5.10-rc4 next-20201120]
[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/NTFS-read-write-driver-GPL-implementation-by-Paragon-Software/20201121-001320
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 4d02da974ea85a62074efedf354e82778f910d82
config: arm64-randconfig-s031-20201120 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.3-134-gb59dbdaf-dirty
# https://github.com/0day-ci/linux/commit/af7bf0c625d20c0ebe8b4c180b4422b2a37a9dd5
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Konstantin-Komarov/NTFS-read-write-driver-GPL-implementation-by-Paragon-Software/20201121-001320
git checkout af7bf0c625d20c0ebe8b4c180b4422b2a37a9dd5
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
"sparse warnings: (new ones prefixed by >>)"
>> fs/ntfs3/super.c:1251:34: sparse: sparse: cast to restricted __le16
>> fs/ntfs3/super.c:1251:34: sparse: sparse: cast to restricted __le16
>> fs/ntfs3/super.c:1251:34: sparse: sparse: cast to restricted __le16
>> fs/ntfs3/super.c:1251:34: sparse: sparse: cast to restricted __le16
vim +1251 fs/ntfs3/super.c
c7374db749d575f Konstantin Komarov 2020-11-20 1132
c7374db749d575f Konstantin Komarov 2020-11-20 1133 /* Check bitmap boundary */
c7374db749d575f Konstantin Komarov 2020-11-20 1134 tt = sbi->used.bitmap.nbits;
c7374db749d575f Konstantin Komarov 2020-11-20 1135 if (inode->i_size < bitmap_size(tt)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1136 err = -EINVAL;
c7374db749d575f Konstantin Komarov 2020-11-20 1137 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1138 }
c7374db749d575f Konstantin Komarov 2020-11-20 1139
c7374db749d575f Konstantin Komarov 2020-11-20 1140 /* Not necessary */
c7374db749d575f Konstantin Komarov 2020-11-20 1141 sbi->used.bitmap.set_tail = true;
c7374db749d575f Konstantin Komarov 2020-11-20 1142 err = wnd_init(&sbi->used.bitmap, sbi->sb, tt);
c7374db749d575f Konstantin Komarov 2020-11-20 1143 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1144 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1145
c7374db749d575f Konstantin Komarov 2020-11-20 1146 iput(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1147
c7374db749d575f Konstantin Komarov 2020-11-20 1148 /* Compute the mft zone */
c7374db749d575f Konstantin Komarov 2020-11-20 1149 err = ntfs_refresh_zone(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1150 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1151 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1152
c7374db749d575f Konstantin Komarov 2020-11-20 1153 /* Load $AttrDef */
c7374db749d575f Konstantin Komarov 2020-11-20 1154 ref.low = cpu_to_le32(MFT_REC_ATTR);
c7374db749d575f Konstantin Komarov 2020-11-20 1155 ref.seq = cpu_to_le16(MFT_REC_ATTR);
c7374db749d575f Konstantin Komarov 2020-11-20 1156 inode = ntfs_iget5(sbi->sb, &ref, &NAME_ATTRDEF);
c7374db749d575f Konstantin Komarov 2020-11-20 1157 if (IS_ERR(inode)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1158 err = PTR_ERR(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1159 ntfs_err(sb, "Failed to load $AttrDef -> %d", err);
c7374db749d575f Konstantin Komarov 2020-11-20 1160 inode = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1161 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1162 }
c7374db749d575f Konstantin Komarov 2020-11-20 1163
c7374db749d575f Konstantin Komarov 2020-11-20 1164 if (inode->i_size < sizeof(struct ATTR_DEF_ENTRY)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1165 err = -EINVAL;
c7374db749d575f Konstantin Komarov 2020-11-20 1166 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1167 }
c7374db749d575f Konstantin Komarov 2020-11-20 1168 bytes = inode->i_size;
c7374db749d575f Konstantin Komarov 2020-11-20 1169 sbi->def_table = t = ntfs_alloc(bytes, 0);
c7374db749d575f Konstantin Komarov 2020-11-20 1170 if (!t) {
c7374db749d575f Konstantin Komarov 2020-11-20 1171 err = -ENOMEM;
c7374db749d575f Konstantin Komarov 2020-11-20 1172 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1173 }
c7374db749d575f Konstantin Komarov 2020-11-20 1174
c7374db749d575f Konstantin Komarov 2020-11-20 1175 for (done = idx = 0; done < bytes; done += PAGE_SIZE, idx++) {
c7374db749d575f Konstantin Komarov 2020-11-20 1176 unsigned long tail = bytes - done;
c7374db749d575f Konstantin Komarov 2020-11-20 1177 struct page *page = ntfs_map_page(inode->i_mapping, idx);
c7374db749d575f Konstantin Komarov 2020-11-20 1178
c7374db749d575f Konstantin Komarov 2020-11-20 1179 if (IS_ERR(page)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1180 err = PTR_ERR(page);
c7374db749d575f Konstantin Komarov 2020-11-20 1181 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1182 }
c7374db749d575f Konstantin Komarov 2020-11-20 1183 memcpy(Add2Ptr(t, done), page_address(page),
c7374db749d575f Konstantin Komarov 2020-11-20 1184 min(PAGE_SIZE, tail));
c7374db749d575f Konstantin Komarov 2020-11-20 1185 ntfs_unmap_page(page);
c7374db749d575f Konstantin Komarov 2020-11-20 1186
c7374db749d575f Konstantin Komarov 2020-11-20 1187 if (!idx && ATTR_STD != t->type) {
c7374db749d575f Konstantin Komarov 2020-11-20 1188 err = -EINVAL;
c7374db749d575f Konstantin Komarov 2020-11-20 1189 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1190 }
c7374db749d575f Konstantin Komarov 2020-11-20 1191 }
c7374db749d575f Konstantin Komarov 2020-11-20 1192
c7374db749d575f Konstantin Komarov 2020-11-20 1193 t += 1;
c7374db749d575f Konstantin Komarov 2020-11-20 1194 sbi->def_entries = 1;
c7374db749d575f Konstantin Komarov 2020-11-20 1195 done = sizeof(struct ATTR_DEF_ENTRY);
c7374db749d575f Konstantin Komarov 2020-11-20 1196 sbi->reparse.max_size = MAXIMUM_REPARSE_DATA_BUFFER_SIZE;
c7374db749d575f Konstantin Komarov 2020-11-20 1197
c7374db749d575f Konstantin Komarov 2020-11-20 1198 while (done + sizeof(struct ATTR_DEF_ENTRY) <= bytes) {
c7374db749d575f Konstantin Komarov 2020-11-20 1199 u32 t32 = le32_to_cpu(t->type);
c7374db749d575f Konstantin Komarov 2020-11-20 1200
c7374db749d575f Konstantin Komarov 2020-11-20 1201 if ((t32 & 0xF) || le32_to_cpu(t[-1].type) >= t32)
c7374db749d575f Konstantin Komarov 2020-11-20 1202 break;
c7374db749d575f Konstantin Komarov 2020-11-20 1203
c7374db749d575f Konstantin Komarov 2020-11-20 1204 if (t->type == ATTR_REPARSE)
c7374db749d575f Konstantin Komarov 2020-11-20 1205 sbi->reparse.max_size = le64_to_cpu(t->max_sz);
c7374db749d575f Konstantin Komarov 2020-11-20 1206
c7374db749d575f Konstantin Komarov 2020-11-20 1207 done += sizeof(struct ATTR_DEF_ENTRY);
c7374db749d575f Konstantin Komarov 2020-11-20 1208 t += 1;
c7374db749d575f Konstantin Komarov 2020-11-20 1209 sbi->def_entries += 1;
c7374db749d575f Konstantin Komarov 2020-11-20 1210 }
c7374db749d575f Konstantin Komarov 2020-11-20 1211 iput(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1212
c7374db749d575f Konstantin Komarov 2020-11-20 1213 /* Load $UpCase */
c7374db749d575f Konstantin Komarov 2020-11-20 1214 ref.low = cpu_to_le32(MFT_REC_UPCASE);
c7374db749d575f Konstantin Komarov 2020-11-20 1215 ref.seq = cpu_to_le16(MFT_REC_UPCASE);
c7374db749d575f Konstantin Komarov 2020-11-20 1216 inode = ntfs_iget5(sb, &ref, &NAME_UPCASE);
c7374db749d575f Konstantin Komarov 2020-11-20 1217 if (IS_ERR(inode)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1218 err = PTR_ERR(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1219 ntfs_err(sb, "Failed to load $LogFile.");
c7374db749d575f Konstantin Komarov 2020-11-20 1220 inode = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1221 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1222 }
c7374db749d575f Konstantin Komarov 2020-11-20 1223
c7374db749d575f Konstantin Komarov 2020-11-20 1224 ni = ntfs_i(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1225
c7374db749d575f Konstantin Komarov 2020-11-20 1226 if (inode->i_size != 0x10000 * sizeof(short)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1227 err = -EINVAL;
c7374db749d575f Konstantin Komarov 2020-11-20 1228 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1229 }
c7374db749d575f Konstantin Komarov 2020-11-20 1230
c7374db749d575f Konstantin Komarov 2020-11-20 1231 sbi->upcase = upcase = ntfs_alloc(0x10000 * sizeof(short), 0);
c7374db749d575f Konstantin Komarov 2020-11-20 1232 if (!upcase) {
c7374db749d575f Konstantin Komarov 2020-11-20 1233 err = -ENOMEM;
c7374db749d575f Konstantin Komarov 2020-11-20 1234 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1235 }
c7374db749d575f Konstantin Komarov 2020-11-20 1236
c7374db749d575f Konstantin Komarov 2020-11-20 1237 for (idx = 0; idx < (0x10000 * sizeof(short) >> PAGE_SHIFT); idx++) {
c7374db749d575f Konstantin Komarov 2020-11-20 1238 const u16 *src;
c7374db749d575f Konstantin Komarov 2020-11-20 1239 u16 *dst = Add2Ptr(upcase, idx << PAGE_SHIFT);
c7374db749d575f Konstantin Komarov 2020-11-20 1240 struct page *page = ntfs_map_page(inode->i_mapping, idx);
c7374db749d575f Konstantin Komarov 2020-11-20 1241
c7374db749d575f Konstantin Komarov 2020-11-20 1242 if (IS_ERR(page)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1243 err = PTR_ERR(page);
c7374db749d575f Konstantin Komarov 2020-11-20 1244 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1245 }
c7374db749d575f Konstantin Komarov 2020-11-20 1246
c7374db749d575f Konstantin Komarov 2020-11-20 1247 src = page_address(page);
c7374db749d575f Konstantin Komarov 2020-11-20 1248
c7374db749d575f Konstantin Komarov 2020-11-20 1249 #ifdef __BIG_ENDIAN
c7374db749d575f Konstantin Komarov 2020-11-20 1250 for (i = 0; i < PAGE_SIZE / sizeof(u16); i++)
c7374db749d575f Konstantin Komarov 2020-11-20 @1251 *dst++ = le16_to_cpu(*src++);
c7374db749d575f Konstantin Komarov 2020-11-20 1252 #else
c7374db749d575f Konstantin Komarov 2020-11-20 1253 memcpy(dst, src, PAGE_SIZE);
c7374db749d575f Konstantin Komarov 2020-11-20 1254 #endif
c7374db749d575f Konstantin Komarov 2020-11-20 1255 ntfs_unmap_page(page);
c7374db749d575f Konstantin Komarov 2020-11-20 1256 }
c7374db749d575f Konstantin Komarov 2020-11-20 1257
c7374db749d575f Konstantin Komarov 2020-11-20 1258 shared = ntfs_set_shared(upcase, 0x10000 * sizeof(short));
c7374db749d575f Konstantin Komarov 2020-11-20 1259 if (shared && upcase != shared) {
c7374db749d575f Konstantin Komarov 2020-11-20 1260 sbi->upcase = shared;
c7374db749d575f Konstantin Komarov 2020-11-20 1261 ntfs_free(upcase);
c7374db749d575f Konstantin Komarov 2020-11-20 1262 }
c7374db749d575f Konstantin Komarov 2020-11-20 1263
c7374db749d575f Konstantin Komarov 2020-11-20 1264 iput(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1265 inode = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1266
c7374db749d575f Konstantin Komarov 2020-11-20 1267 if (is_ntfs3(sbi)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1268 /* Load $Secure */
c7374db749d575f Konstantin Komarov 2020-11-20 1269 err = ntfs_security_init(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1270 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1271 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1272
c7374db749d575f Konstantin Komarov 2020-11-20 1273 /* Load $Extend */
c7374db749d575f Konstantin Komarov 2020-11-20 1274 err = ntfs_extend_init(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1275 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1276 goto load_root;
c7374db749d575f Konstantin Komarov 2020-11-20 1277
c7374db749d575f Konstantin Komarov 2020-11-20 1278 /* Load $Extend\$Reparse */
c7374db749d575f Konstantin Komarov 2020-11-20 1279 err = ntfs_reparse_init(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1280 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1281 goto load_root;
c7374db749d575f Konstantin Komarov 2020-11-20 1282
c7374db749d575f Konstantin Komarov 2020-11-20 1283 /* Load $Extend\$ObjId */
c7374db749d575f Konstantin Komarov 2020-11-20 1284 err = ntfs_objid_init(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1285 if (err)
c7374db749d575f Konstantin Komarov 2020-11-20 1286 goto load_root;
c7374db749d575f Konstantin Komarov 2020-11-20 1287 }
c7374db749d575f Konstantin Komarov 2020-11-20 1288
c7374db749d575f Konstantin Komarov 2020-11-20 1289 load_root:
c7374db749d575f Konstantin Komarov 2020-11-20 1290
c7374db749d575f Konstantin Komarov 2020-11-20 1291 /* Load root */
c7374db749d575f Konstantin Komarov 2020-11-20 1292 ref.low = cpu_to_le32(MFT_REC_ROOT);
c7374db749d575f Konstantin Komarov 2020-11-20 1293 ref.seq = cpu_to_le16(MFT_REC_ROOT);
c7374db749d575f Konstantin Komarov 2020-11-20 1294 inode = ntfs_iget5(sb, &ref, &NAME_ROOT);
c7374db749d575f Konstantin Komarov 2020-11-20 1295 if (IS_ERR(inode)) {
c7374db749d575f Konstantin Komarov 2020-11-20 1296 err = PTR_ERR(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1297 ntfs_err(sb, "Failed to load root.");
c7374db749d575f Konstantin Komarov 2020-11-20 1298 inode = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1299 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1300 }
c7374db749d575f Konstantin Komarov 2020-11-20 1301
c7374db749d575f Konstantin Komarov 2020-11-20 1302 ni = ntfs_i(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1303
c7374db749d575f Konstantin Komarov 2020-11-20 1304 sb->s_root = d_make_root(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1305
c7374db749d575f Konstantin Komarov 2020-11-20 1306 if (!sb->s_root) {
c7374db749d575f Konstantin Komarov 2020-11-20 1307 err = -EINVAL;
c7374db749d575f Konstantin Komarov 2020-11-20 1308 goto out;
c7374db749d575f Konstantin Komarov 2020-11-20 1309 }
c7374db749d575f Konstantin Komarov 2020-11-20 1310
c7374db749d575f Konstantin Komarov 2020-11-20 1311 return 0;
c7374db749d575f Konstantin Komarov 2020-11-20 1312
c7374db749d575f Konstantin Komarov 2020-11-20 1313 out:
c7374db749d575f Konstantin Komarov 2020-11-20 1314 iput(inode);
c7374db749d575f Konstantin Komarov 2020-11-20 1315
c7374db749d575f Konstantin Komarov 2020-11-20 1316 if (sb->s_root) {
c7374db749d575f Konstantin Komarov 2020-11-20 1317 d_drop(sb->s_root);
c7374db749d575f Konstantin Komarov 2020-11-20 1318 sb->s_root = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1319 }
c7374db749d575f Konstantin Komarov 2020-11-20 1320
c7374db749d575f Konstantin Komarov 2020-11-20 1321 put_ntfs(sbi);
c7374db749d575f Konstantin Komarov 2020-11-20 1322
c7374db749d575f Konstantin Komarov 2020-11-20 1323 sb->s_fs_info = NULL;
c7374db749d575f Konstantin Komarov 2020-11-20 1324 return err;
c7374db749d575f Konstantin Komarov 2020-11-20 1325 }
c7374db749d575f Konstantin Komarov 2020-11-20 1326
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 40872 bytes --]
next prev parent reply other threads:[~2020-11-20 19:42 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-20 16:09 [PATCH v13 00/10] NTFS read-write driver GPL implementation by Paragon Software Konstantin Komarov
2020-11-20 16:09 ` [PATCH v13 01/10] fs/ntfs3: Add headers and misc files Konstantin Komarov
2020-11-20 16:09 ` [PATCH v13 02/10] fs/ntfs3: Add initialization of super block Konstantin Komarov
2020-11-20 16:09 ` [PATCH v13 03/10] fs/ntfs3: Add bitmap Konstantin Komarov
2020-11-20 16:09 ` [PATCH v13 04/10] fs/ntfs3: Add file operations and implementation Konstantin Komarov
2020-11-20 16:09 ` [PATCH v13 05/10] fs/ntfs3: Add attrib operations Konstantin Komarov
2020-11-20 16:09 ` [PATCH v13 06/10] fs/ntfs3: Add compression Konstantin Komarov
2020-11-20 16:09 ` [PATCH v13 07/10] fs/ntfs3: Add NTFS journal Konstantin Komarov
2020-11-20 16:09 ` [PATCH v13 08/10] fs/ntfs3: Add Kconfig, Makefile and doc Konstantin Komarov
2020-11-20 16:09 ` [PATCH v13 09/10] fs/ntfs3: Add NTFS3 in fs/Kconfig and fs/Makefile Konstantin Komarov
2020-11-20 19:42 ` kernel test robot [this message]
2020-11-20 19:42 ` kernel test robot
2020-11-20 16:09 ` [PATCH v13 10/10] fs/ntfs3: Add MAINTAINERS Konstantin Komarov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202011210303.GSSFlYcw-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.