tree:
https://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git fast_track
head: 661b79d6d9f8cd214e1fbd480a9fe2ea66be2539
commit: 661b79d6d9f8cd214e1fbd480a9fe2ea66be2539 [2/2] udf: fix the problem that the disc
content is not displayed
config: x86_64-rhel (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
#
https://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git/commit/...
git remote add ext3
https://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git
git fetch --no-tags ext3 fast_track
git checkout 661b79d6d9f8cd214e1fbd480a9fe2ea66be2539
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
fs/udf/super.c: In function 'udf_check_vsd':
> fs/udf/super.c:716:64: error: expected ';' before
')' token
716 | sector_offset = (loff_t)sbi->s_session <<
sb->s_blocksize_bits);
| ^
| ;
> fs/udf/super.c:716:64: error: expected statement before
')' token
vim +716 fs/udf/super.c
693
694 /*
695 * Check Volume Structure Descriptors (ECMA 167 2/9.1)
696 * We also check any "CD-ROM Volume Descriptor Set" (ECMA 167 2/8.3.1)
697 * @return 1 if NSR02 or NSR03 found,
698 * -1 if first sector read error, 0 otherwise
699 */
700 static int udf_check_vsd(struct super_block *sb)
701 {
702 struct volStructDesc *vsd = NULL;
703 loff_t sector = VSD_FIRST_SECTOR_OFFSET;
704 int sectorsize;
705 struct buffer_head *bh = NULL;
706 int nsr = 0;
707 struct udf_sb_info *sbi;
708 loff_t sector_offset;
709
710 sbi = UDF_SB(sb);
711 if (sb->s_blocksize < sizeof(struct volStructDesc))
712 sectorsize = sizeof(struct volStructDesc);
713 else
714 sectorsize = sb->s_blocksize;
715
716 sector_offset = (loff_t)sbi->s_session <<
sb->s_blocksize_bits);
717 sector += sector_offset;
718
719 udf_debug("Starting at sector %u (%lu byte sectors)\n",
720 (unsigned int)(sector >> sb->s_blocksize_bits),
721 sb->s_blocksize);
722 /* Process the sequence (if applicable). The hard limit on the sector
723 * offset is arbitrary, hopefully large enough so that all valid UDF
724 * filesystems will be recognised. There is no mention of an upper
725 * bound to the size of the volume recognition area in the standard.
726 * The limit will prevent the code to read all the sectors of a
727 * specially crafted image (like a bluray disc full of CD001 sectors),
728 * potentially causing minutes or even hours of uninterruptible I/O
729 * activity. This actually happened with uninitialised SSD partitions
730 * (all 0xFF) before the check for the limit and all valid IDs were
731 * added */
732 for (; !nsr && sector < VSD_MAX_SECTOR_OFFSET; sector += sectorsize) {
733 /* Read a block */
734 bh = udf_tread(sb, sector >> sb->s_blocksize_bits);
735 if (!bh)
736 break;
737
738 vsd = (struct volStructDesc *)(bh->b_data +
739 (sector & (sb->s_blocksize - 1)));
740 nsr = identify_vsd(vsd);
741 /* Found NSR or end? */
742 if (nsr) {
743 brelse(bh);
744 break;
745 }
746 /*
747 * Special handling for improperly formatted VRS (e.g., Win10)
748 * where components are separated by 2048 bytes even though
749 * sectors are 4K
750 */
751 if (sb->s_blocksize == 4096) {
752 nsr = identify_vsd(vsd + 1);
753 /* Ignore unknown IDs... */
754 if (nsr < 0)
755 nsr = 0;
756 }
757 brelse(bh);
758 }
759
760 if (nsr > 0)
761 return 1;
762 else if (!bh && sector - sector_offset == VSD_FIRST_SECTOR_OFFSET)
763 return -1;
764 else
765 return 0;
766 }
767
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org