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

From: kernel test robot
Date: Fri Dec 04 2020 - 13:53:57 EST


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-rc6 next-20201204]
[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/20201204-235247
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git bbe2ba04c5a92a49db8a42c850a5a2f6481e47eb
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
# https://github.com/0day-ci/linux/commit/90b3182a8c96b7a5e9a59ed7a9c9b2d3e22c7ee1
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/20201204-235247
git checkout 90b3182a8c96b7a5e9a59ed7a9c9b2d3e22c7ee1
# 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/lib/lzx_decompress.c:441:1: warning: no previous prototype for 'lzx_decompress' [-Wmissing-prototypes]
441 | lzx_decompress(struct lzx_decompressor *__restrict d,
| ^~~~~~~~~~~~~~
>> fs/ntfs3/lib/lzx_decompress.c:509:1: warning: no previous prototype for 'lzx_allocate_decompressor' [-Wmissing-prototypes]
509 | lzx_allocate_decompressor(size_t max_block_size)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
>> fs/ntfs3/lib/lzx_decompress.c:550:1: warning: no previous prototype for 'lzx_free_decompressor' [-Wmissing-prototypes]
550 | lzx_free_decompressor(struct lzx_decompressor *d)
| ^~~~~~~~~~~~~~~~~~~~~
--
>> fs/ntfs3/lib/xpress_decompress.c:84:1: warning: no previous prototype for 'xpress_decompress' [-Wmissing-prototypes]
84 | xpress_decompress(struct xpress_decompressor *__restrict d,
| ^~~~~~~~~~~~~~~~~
>> fs/ntfs3/lib/xpress_decompress.c:155:1: warning: no previous prototype for 'xpress_allocate_decompressor' [-Wmissing-prototypes]
155 | xpress_allocate_decompressor(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> fs/ntfs3/lib/xpress_decompress.c:162:1: warning: no previous prototype for 'xpress_free_decompressor' [-Wmissing-prototypes]
162 | xpress_free_decompressor(struct xpress_decompressor *d)
| ^~~~~~~~~~~~~~~~~~~~~~~~

vim +/lzx_decompress +441 fs/ntfs3/lib/lzx_decompress.c

f08c356f4019dd Konstantin Komarov 2020-12-04 439
f08c356f4019dd Konstantin Komarov 2020-12-04 440 int
f08c356f4019dd Konstantin Komarov 2020-12-04 @441 lzx_decompress(struct lzx_decompressor *__restrict d,
f08c356f4019dd Konstantin Komarov 2020-12-04 442 const void *__restrict compressed_data, size_t compressed_size,
f08c356f4019dd Konstantin Komarov 2020-12-04 443 void *__restrict uncompressed_data, size_t uncompressed_size)
f08c356f4019dd Konstantin Komarov 2020-12-04 444 {
f08c356f4019dd Konstantin Komarov 2020-12-04 445 u8 * const out_begin = uncompressed_data;
f08c356f4019dd Konstantin Komarov 2020-12-04 446 u8 *out_next = out_begin;
f08c356f4019dd Konstantin Komarov 2020-12-04 447 u8 * const out_end = out_begin + uncompressed_size;
f08c356f4019dd Konstantin Komarov 2020-12-04 448 struct input_bitstream is;
f08c356f4019dd Konstantin Komarov 2020-12-04 449 u32 recent_offsets[LZX_NUM_RECENT_OFFSETS] = {1, 1, 1};
f08c356f4019dd Konstantin Komarov 2020-12-04 450 u32 may_have_e8_byte = 0;
f08c356f4019dd Konstantin Komarov 2020-12-04 451
f08c356f4019dd Konstantin Komarov 2020-12-04 452 STATIC_ASSERT(LZX_NUM_RECENT_OFFSETS == 3);
f08c356f4019dd Konstantin Komarov 2020-12-04 453
f08c356f4019dd Konstantin Komarov 2020-12-04 454 init_input_bitstream(&is, compressed_data, compressed_size);
f08c356f4019dd Konstantin Komarov 2020-12-04 455
f08c356f4019dd Konstantin Komarov 2020-12-04 456 /* Codeword lengths begin as all 0's for delta encoding purposes. */
f08c356f4019dd Konstantin Komarov 2020-12-04 457 memset(d->maincode_lens, 0, d->num_main_syms);
f08c356f4019dd Konstantin Komarov 2020-12-04 458 memset(d->lencode_lens, 0, LZX_LENCODE_NUM_SYMBOLS);
f08c356f4019dd Konstantin Komarov 2020-12-04 459
f08c356f4019dd Konstantin Komarov 2020-12-04 460 /* Decompress blocks until we have all the uncompressed data. */
f08c356f4019dd Konstantin Komarov 2020-12-04 461
f08c356f4019dd Konstantin Komarov 2020-12-04 462 while (out_next != out_end) {
f08c356f4019dd Konstantin Komarov 2020-12-04 463 int block_type;
f08c356f4019dd Konstantin Komarov 2020-12-04 464 u32 block_size;
f08c356f4019dd Konstantin Komarov 2020-12-04 465
f08c356f4019dd Konstantin Komarov 2020-12-04 466 if (lzx_read_block_header(d, &is, recent_offsets,
f08c356f4019dd Konstantin Komarov 2020-12-04 467 &block_type, &block_size))
f08c356f4019dd Konstantin Komarov 2020-12-04 468 return -1;
f08c356f4019dd Konstantin Komarov 2020-12-04 469
f08c356f4019dd Konstantin Komarov 2020-12-04 470 if (block_size < 1 || block_size > out_end - out_next)
f08c356f4019dd Konstantin Komarov 2020-12-04 471 return -1;
f08c356f4019dd Konstantin Komarov 2020-12-04 472
f08c356f4019dd Konstantin Komarov 2020-12-04 473 if (likely(block_type != LZX_BLOCKTYPE_UNCOMPRESSED)) {
f08c356f4019dd Konstantin Komarov 2020-12-04 474
f08c356f4019dd Konstantin Komarov 2020-12-04 475 /* Compressed block */
f08c356f4019dd Konstantin Komarov 2020-12-04 476 if (lzx_decompress_block(d, &is, block_type, block_size,
f08c356f4019dd Konstantin Komarov 2020-12-04 477 out_begin, out_next,
f08c356f4019dd Konstantin Komarov 2020-12-04 478 recent_offsets))
f08c356f4019dd Konstantin Komarov 2020-12-04 479 return -1;
f08c356f4019dd Konstantin Komarov 2020-12-04 480
f08c356f4019dd Konstantin Komarov 2020-12-04 481 /* If the first E8 byte was in this block, then it must
f08c356f4019dd Konstantin Komarov 2020-12-04 482 * have been encoded as a literal using mainsym E8.
f08c356f4019dd Konstantin Komarov 2020-12-04 483 */
f08c356f4019dd Konstantin Komarov 2020-12-04 484 may_have_e8_byte |= d->maincode_lens[0xE8];
f08c356f4019dd Konstantin Komarov 2020-12-04 485 } else {
f08c356f4019dd Konstantin Komarov 2020-12-04 486
f08c356f4019dd Konstantin Komarov 2020-12-04 487 /* Uncompressed block */
f08c356f4019dd Konstantin Komarov 2020-12-04 488 if (bitstream_read_bytes(&is, out_next, block_size))
f08c356f4019dd Konstantin Komarov 2020-12-04 489 return -1;
f08c356f4019dd Konstantin Komarov 2020-12-04 490
f08c356f4019dd Konstantin Komarov 2020-12-04 491 /* Re-align the bitstream if needed. */
f08c356f4019dd Konstantin Komarov 2020-12-04 492 if (block_size & 1)
f08c356f4019dd Konstantin Komarov 2020-12-04 493 bitstream_read_byte(&is);
f08c356f4019dd Konstantin Komarov 2020-12-04 494
f08c356f4019dd Konstantin Komarov 2020-12-04 495 /* There may have been an E8 byte in the block. */
f08c356f4019dd Konstantin Komarov 2020-12-04 496 may_have_e8_byte = 1;
f08c356f4019dd Konstantin Komarov 2020-12-04 497 }
f08c356f4019dd Konstantin Komarov 2020-12-04 498 out_next += block_size;
f08c356f4019dd Konstantin Komarov 2020-12-04 499 }
f08c356f4019dd Konstantin Komarov 2020-12-04 500
f08c356f4019dd Konstantin Komarov 2020-12-04 501 /* Postprocess the data unless it cannot possibly contain E8 bytes. */
f08c356f4019dd Konstantin Komarov 2020-12-04 502 if (may_have_e8_byte)
f08c356f4019dd Konstantin Komarov 2020-12-04 503 lzx_postprocess(uncompressed_data, uncompressed_size);
f08c356f4019dd Konstantin Komarov 2020-12-04 504
f08c356f4019dd Konstantin Komarov 2020-12-04 505 return 0;
f08c356f4019dd Konstantin Komarov 2020-12-04 506 }
f08c356f4019dd Konstantin Komarov 2020-12-04 507
f08c356f4019dd Konstantin Komarov 2020-12-04 508 struct lzx_decompressor *
f08c356f4019dd Konstantin Komarov 2020-12-04 @509 lzx_allocate_decompressor(size_t max_block_size)
f08c356f4019dd Konstantin Komarov 2020-12-04 510 {
f08c356f4019dd Konstantin Komarov 2020-12-04 511 u32 window_order;
f08c356f4019dd Konstantin Komarov 2020-12-04 512 struct lzx_decompressor *d;
f08c356f4019dd Konstantin Komarov 2020-12-04 513 u32 offset_slot;
f08c356f4019dd Konstantin Komarov 2020-12-04 514
f08c356f4019dd Konstantin Komarov 2020-12-04 515 /*
f08c356f4019dd Konstantin Komarov 2020-12-04 516 * ntfs uses lzx only as max_block_size == 0x8000
f08c356f4019dd Konstantin Komarov 2020-12-04 517 * this value certainly will not fail
f08c356f4019dd Konstantin Komarov 2020-12-04 518 * we can remove lzx_get_window_order + ilog2_ceil + bsrw
f08c356f4019dd Konstantin Komarov 2020-12-04 519 */
f08c356f4019dd Konstantin Komarov 2020-12-04 520 WARN_ON(max_block_size != 0x8000);
f08c356f4019dd Konstantin Komarov 2020-12-04 521
f08c356f4019dd Konstantin Komarov 2020-12-04 522 window_order = lzx_get_window_order(max_block_size);
f08c356f4019dd Konstantin Komarov 2020-12-04 523 if (window_order == 0)
f08c356f4019dd Konstantin Komarov 2020-12-04 524 return ERR_PTR(-EINVAL);
f08c356f4019dd Konstantin Komarov 2020-12-04 525
f08c356f4019dd Konstantin Komarov 2020-12-04 526 d = aligned_malloc(sizeof(*d), DECODE_TABLE_ALIGNMENT);
f08c356f4019dd Konstantin Komarov 2020-12-04 527 if (!d)
f08c356f4019dd Konstantin Komarov 2020-12-04 528 return NULL;
f08c356f4019dd Konstantin Komarov 2020-12-04 529
f08c356f4019dd Konstantin Komarov 2020-12-04 530 d->window_order = window_order;
f08c356f4019dd Konstantin Komarov 2020-12-04 531 d->num_main_syms = lzx_get_num_main_syms(window_order);
f08c356f4019dd Konstantin Komarov 2020-12-04 532
f08c356f4019dd Konstantin Komarov 2020-12-04 533 /* Initialize 'd->extra_offset_bits_minus_aligned'. */
f08c356f4019dd Konstantin Komarov 2020-12-04 534 STATIC_ASSERT(sizeof(d->extra_offset_bits_minus_aligned) ==
f08c356f4019dd Konstantin Komarov 2020-12-04 535 sizeof(lzx_extra_offset_bits));
f08c356f4019dd Konstantin Komarov 2020-12-04 536 STATIC_ASSERT(sizeof(d->extra_offset_bits) ==
f08c356f4019dd Konstantin Komarov 2020-12-04 537 sizeof(lzx_extra_offset_bits));
f08c356f4019dd Konstantin Komarov 2020-12-04 538 memcpy(d->extra_offset_bits_minus_aligned, lzx_extra_offset_bits,
f08c356f4019dd Konstantin Komarov 2020-12-04 539 sizeof(lzx_extra_offset_bits));
f08c356f4019dd Konstantin Komarov 2020-12-04 540 for (offset_slot = LZX_MIN_ALIGNED_OFFSET_SLOT;
f08c356f4019dd Konstantin Komarov 2020-12-04 541 offset_slot < LZX_MAX_OFFSET_SLOTS; offset_slot++) {
f08c356f4019dd Konstantin Komarov 2020-12-04 542 d->extra_offset_bits_minus_aligned[offset_slot] -=
f08c356f4019dd Konstantin Komarov 2020-12-04 543 LZX_NUM_ALIGNED_OFFSET_BITS;
f08c356f4019dd Konstantin Komarov 2020-12-04 544 }
f08c356f4019dd Konstantin Komarov 2020-12-04 545
f08c356f4019dd Konstantin Komarov 2020-12-04 546 return d;
f08c356f4019dd Konstantin Komarov 2020-12-04 547 }
f08c356f4019dd Konstantin Komarov 2020-12-04 548
f08c356f4019dd Konstantin Komarov 2020-12-04 549 void
f08c356f4019dd Konstantin Komarov 2020-12-04 @550 lzx_free_decompressor(struct lzx_decompressor *d)

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

Attachment: .config.gz
Description: application/gzip