From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org,
Konstantin Komarov <almaz.alexandrovich@paragon-software.com>,
linux-fsdevel@vger.kernel.org
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>,
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: [kbuild] Re: [PATCH v11 09/10] fs/ntfs3: Add NTFS3 in fs/Kconfig and fs/Makefile
Date: Mon, 2 Nov 2020 11:36:04 +0300 [thread overview]
Message-ID: <20201102083604.GT18329@kadam> (raw)
In-Reply-To: <20201030150239.3957156-10-almaz.alexandrovich@paragon-software.com>
[-- Attachment #1: Type: text/plain, Size: 11858 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-rc2 next-20201030]
[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/20201031-220904
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 5fc6b075e165f641fbc366b58b578055762d5f8c
config: i386-randconfig-m021-20201101 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
fs/ntfs3/attrib.c:331 attr_set_size_res() error: dereferencing freed memory 'attr_s'
fs/ntfs3/attrib.c:1267 attr_allocate_frame() error: uninitialized symbol 'hint'.
fs/ntfs3/attrib.c:1393 attr_allocate_frame() error: we previously assumed 'attr_b' could be null (see line 1306)
fs/ntfs3/namei.c:438 ntfs_rename() warn: variable dereferenced before check 'old_inode' (see line 296)
fs/ntfs3/fsntfs.c:844 ntfs_clear_mft_tail() error: uninitialized symbol 'err'.
fs/ntfs3/fsntfs.c:1294 ntfs_read_run_nb() error: uninitialized symbol 'idx'.
fs/ntfs3/frecord.c:166 ni_load_mi_ex() error: we previously assumed 'r' could be null (see line 159)
fs/ntfs3/frecord.c:505 ni_ins_new_attr() error: we previously assumed 'le' could be null (see line 490)
fs/ntfs3/frecord.c:658 ni_repack() warn: 'run.runs_' double freed
fs/ntfs3/frecord.c:1439 ni_insert_nonresident() warn: potential memory corrupting cast 8 vs 2 bytes
fs/ntfs3/frecord.c:2214 ni_read_frame() warn: ignoring unreachable code.
fs/ntfs3/xattr.c:514 ntfs_get_acl_ex() warn: passing zero to 'ERR_PTR'
fs/ntfs3/index.c:1133 indx_find() warn: variable dereferenced before check 'fnd' (see line 1117)
fs/ntfs3/index.c:1371 indx_find_raw() error: we previously assumed 'n' could be null (see line 1349)
fs/ntfs3/index.c:1404 indx_create_allocate() warn: should '1 << indx->index_bits' be a 64 bit type?
fs/ntfs3/index.c:1755 indx_insert_into_root() warn: possible memory leak of 're'
fs/ntfs3/index.c:549 hdr_find_split() warn: variable dereferenced before check 'e' (see line 547)
fs/ntfs3/inode.c:687 ntfs_readpage() warn: should 'page->index << 12' be a 64 bit type?
fs/ntfs3/fslog.c:2205 last_log_lsn() warn: possible memory leak of 'page_bufs'
fs/ntfs3/fslog.c:2418 find_log_rec() error: we previously assumed 'rh' could be null (see line 2404)
fs/ntfs3/fslog.c:2551 find_client_next_lsn() error: double free of 'lcb->lrh'
fs/ntfs3/fslog.c:639 enum_rstbl() error: we previously assumed 't' could be null (see line 628)
fs/ntfs3/fslog.c:3158 do_action() warn: variable dereferenced before check 'mi' (see line 3118)
fs/ntfs3/fslog.c:3913 log_replay() error: dereferencing freed memory 'rst_info.r_page'
vim +/attr_s +331 fs/ntfs3/attrib.c
e3a1cdcc648083 Konstantin Komarov 2020-10-30 241 static int attr_set_size_res(struct ntfs_inode *ni, struct ATTRIB *attr,
e3a1cdcc648083 Konstantin Komarov 2020-10-30 242 struct ATTR_LIST_ENTRY *le, struct mft_inode *mi,
e3a1cdcc648083 Konstantin Komarov 2020-10-30 243 u64 new_size, struct runs_tree *run,
e3a1cdcc648083 Konstantin Komarov 2020-10-30 244 struct ATTRIB **ins_attr)
e3a1cdcc648083 Konstantin Komarov 2020-10-30 245 {
e3a1cdcc648083 Konstantin Komarov 2020-10-30 246 int err = 0;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 247 struct ntfs_sb_info *sbi = mi->sbi;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 248 struct MFT_REC *rec = mi->mrec;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 249 u32 used = le32_to_cpu(rec->used);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 250 u32 asize = le32_to_cpu(attr->size);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 251 u32 aoff = PtrOffset(rec, attr);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 252 u32 rsize = le32_to_cpu(attr->res.data_size);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 253 u32 tail = used - aoff - asize;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 254 char *next = Add2Ptr(attr, asize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 255 int dsize = QuadAlign(new_size) - QuadAlign(rsize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 256 CLST len, alen;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 257 struct ATTRIB *attr_s = NULL;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 258 bool is_ext;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 259
e3a1cdcc648083 Konstantin Komarov 2020-10-30 260 if (dsize < 0) {
e3a1cdcc648083 Konstantin Komarov 2020-10-30 261 memmove(next + dsize, next, tail);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 262 } else if (dsize > 0) {
e3a1cdcc648083 Konstantin Komarov 2020-10-30 263 if (used + dsize > sbi->max_bytes_per_attr)
e3a1cdcc648083 Konstantin Komarov 2020-10-30 264 goto resident2nonresident;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 265
e3a1cdcc648083 Konstantin Komarov 2020-10-30 266 memmove(next + dsize, next, tail);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 267 memset(next, 0, dsize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 268 }
e3a1cdcc648083 Konstantin Komarov 2020-10-30 269
e3a1cdcc648083 Konstantin Komarov 2020-10-30 270 rec->used = cpu_to_le32(used + dsize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 271 attr->size = cpu_to_le32(asize + dsize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 272 attr->res.data_size = cpu_to_le32(new_size);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 273 mi->dirty = true;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 274 *ins_attr = attr;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 275
e3a1cdcc648083 Konstantin Komarov 2020-10-30 276 return 0;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 277
e3a1cdcc648083 Konstantin Komarov 2020-10-30 278 resident2nonresident:
e3a1cdcc648083 Konstantin Komarov 2020-10-30 279 len = bytes_to_cluster(sbi, rsize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 280
e3a1cdcc648083 Konstantin Komarov 2020-10-30 281 run_init(run);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 282
e3a1cdcc648083 Konstantin Komarov 2020-10-30 283 is_ext = is_attr_ext(attr);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 284
e3a1cdcc648083 Konstantin Komarov 2020-10-30 285 if (!len) {
e3a1cdcc648083 Konstantin Komarov 2020-10-30 286 alen = 0;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 287 } else if (is_ext) {
e3a1cdcc648083 Konstantin Komarov 2020-10-30 288 if (!run_add_entry(run, 0, SPARSE_LCN, len)) {
e3a1cdcc648083 Konstantin Komarov 2020-10-30 289 err = -ENOMEM;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 290 goto out;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 291 }
e3a1cdcc648083 Konstantin Komarov 2020-10-30 292 alen = len;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 293 } else {
e3a1cdcc648083 Konstantin Komarov 2020-10-30 294 err = attr_allocate_clusters(sbi, run, 0, 0, len, NULL,
e3a1cdcc648083 Konstantin Komarov 2020-10-30 295 ALLOCATE_DEF, &alen, 0, NULL);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 296 if (err)
e3a1cdcc648083 Konstantin Komarov 2020-10-30 297 goto out;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 298
e3a1cdcc648083 Konstantin Komarov 2020-10-30 299 err = ntfs_sb_write_run(sbi, run, 0, resident_data(attr),
e3a1cdcc648083 Konstantin Komarov 2020-10-30 300 rsize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 301 if (err)
e3a1cdcc648083 Konstantin Komarov 2020-10-30 302 goto out;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 303 }
e3a1cdcc648083 Konstantin Komarov 2020-10-30 304
e3a1cdcc648083 Konstantin Komarov 2020-10-30 305 attr_s = ntfs_memdup(attr, asize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 306 if (!attr_s) {
e3a1cdcc648083 Konstantin Komarov 2020-10-30 307 err = -ENOMEM;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 308 goto out;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 309 }
e3a1cdcc648083 Konstantin Komarov 2020-10-30 310
e3a1cdcc648083 Konstantin Komarov 2020-10-30 311 /*verify(mi_remove_attr(mi, attr));*/
e3a1cdcc648083 Konstantin Komarov 2020-10-30 312 used -= asize;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 313 memmove(attr, Add2Ptr(attr, asize), used - aoff);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 314 rec->used = cpu_to_le32(used);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 315 mi->dirty = true;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 316 if (le)
e3a1cdcc648083 Konstantin Komarov 2020-10-30 317 al_remove_le(ni, le);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 318
e3a1cdcc648083 Konstantin Komarov 2020-10-30 319 err = ni_insert_nonresident(ni, attr_s->type, attr_name(attr_s),
e3a1cdcc648083 Konstantin Komarov 2020-10-30 320 attr_s->name_len, run, 0, alen,
e3a1cdcc648083 Konstantin Komarov 2020-10-30 321 attr_s->flags, &attr, NULL);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 322 if (err)
e3a1cdcc648083 Konstantin Komarov 2020-10-30 323 goto out;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 324
e3a1cdcc648083 Konstantin Komarov 2020-10-30 325 ntfs_free(attr_s);
^^^^^^^^^^^^^^^^^
Freed.
e3a1cdcc648083 Konstantin Komarov 2020-10-30 326 attr->nres.data_size = cpu_to_le64(rsize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 327 attr->nres.valid_size = attr->nres.data_size;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 328
e3a1cdcc648083 Konstantin Komarov 2020-10-30 329 *ins_attr = attr;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 330
e3a1cdcc648083 Konstantin Komarov 2020-10-30 @331 if (attr_s->type == ATTR_DATA && !attr_s->name_len &&
^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^
Dereferenced after a free.
e3a1cdcc648083 Konstantin Komarov 2020-10-30 332 run == &ni->file.run) {
e3a1cdcc648083 Konstantin Komarov 2020-10-30 333 ni->ni_flags &= ~NI_FLAG_RESIDENT;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 334 }
e3a1cdcc648083 Konstantin Komarov 2020-10-30 335
e3a1cdcc648083 Konstantin Komarov 2020-10-30 336 /* Resident attribute becomes non resident */
e3a1cdcc648083 Konstantin Komarov 2020-10-30 337 return 0;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 338
e3a1cdcc648083 Konstantin Komarov 2020-10-30 339 out:
e3a1cdcc648083 Konstantin Komarov 2020-10-30 340 /* undo: do not trim new allocated clusters */
e3a1cdcc648083 Konstantin Komarov 2020-10-30 341 run_deallocate(sbi, run, false);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 342 run_close(run);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 343
e3a1cdcc648083 Konstantin Komarov 2020-10-30 344 if (attr_s) {
e3a1cdcc648083 Konstantin Komarov 2020-10-30 345 memmove(next, Add2Ptr(rec, aoff), used - aoff);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 346 memcpy(Add2Ptr(rec, aoff), attr_s, asize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 347 rec->used = cpu_to_le32(used + asize);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 348 mi->dirty = true;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 349 ntfs_free(attr_s);
e3a1cdcc648083 Konstantin Komarov 2020-10-30 350 /*reinsert le*/
e3a1cdcc648083 Konstantin Komarov 2020-10-30 351 }
e3a1cdcc648083 Konstantin Komarov 2020-10-30 352
e3a1cdcc648083 Konstantin Komarov 2020-10-30 353 return err;
e3a1cdcc648083 Konstantin Komarov 2020-10-30 354 }
---
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: 32884 bytes --]
[-- Attachment #3: Type: text/plain, Size: 149 bytes --]
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-leave@lists.01.org
next prev parent reply other threads:[~2020-11-02 8:37 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-30 15:02 [PATCH v11 00/10] NTFS read-write driver GPL implementation by Paragon Software Konstantin Komarov
2020-10-30 15:02 ` [PATCH v11 01/10] fs/ntfs3: Add headers and misc files Konstantin Komarov
2020-10-30 15:02 ` [PATCH v11 02/10] fs/ntfs3: Add initialization of super block Konstantin Komarov
2020-10-30 15:02 ` [PATCH v11 03/10] fs/ntfs3: Add bitmap Konstantin Komarov
2020-10-30 15:02 ` [PATCH v11 04/10] fs/ntfs3: Add file operations and implementation Konstantin Komarov
2020-10-30 15:02 ` [PATCH v11 05/10] fs/ntfs3: Add attrib operations Konstantin Komarov
2020-10-30 15:02 ` [PATCH v11 06/10] fs/ntfs3: Add compression Konstantin Komarov
2020-10-30 15:02 ` [PATCH v11 07/10] fs/ntfs3: Add NTFS journal Konstantin Komarov
2020-10-30 15:02 ` [PATCH v11 08/10] fs/ntfs3: Add Kconfig, Makefile and doc Konstantin Komarov
2020-10-30 15:02 ` [PATCH v11 09/10] fs/ntfs3: Add NTFS3 in fs/Kconfig and fs/Makefile Konstantin Komarov
2020-10-31 1:23 ` kernel test robot
2020-11-02 8:36 ` Dan Carpenter [this message]
2020-11-03 3:06 ` kernel test robot
2020-10-30 15:02 ` [PATCH v11 10/10] fs/ntfs3: Add MAINTAINERS Konstantin Komarov
2020-10-30 15:24 ` [PATCH v11 00/10] NTFS read-write driver GPL implementation by Paragon Software Pali Rohár
2020-10-30 15:51 ` Konstantin Komarov
2020-10-30 16:24 ` Pali Rohár
2020-10-30 16:41 ` Pali Rohár
2020-10-31 8:51 ` Christoph Hellwig
2020-10-31 2:42 ` Eric Biggers
2020-10-31 2:48 ` Eric Biggers
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=20201102083604.GT18329@kadam \
--to=dan.carpenter@oracle.com \
--cc=aaptel@suse.com \
--cc=almaz.alexandrovich@paragon-software.com \
--cc=dsterba@suse.cz \
--cc=error27@gmail.com \
--cc=joe@perches.com \
--cc=kbuild-all@lists.01.org \
--cc=kbuild@lists.01.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@intel.com \
--cc=mark@harmstone.com \
--cc=pali@kernel.org \
--cc=rdunlap@infradead.org \
--cc=viro@zeniv.linux.org.uk \
--cc=willy@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).