CC: [email protected]
CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: "Matthew Wilcox (Oracle)" <[email protected]>
TO: [email protected]
TO: [email protected]
CC: "Matthew Wilcox (Oracle)" <[email protected]>

Hi "Matthew,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on next-20210810]
[cannot apply to xfs-linux/for-next v5.14-rc5 v5.14-rc4 v5.14-rc3 v5.14-rc5]
[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/Matthew-Wilcox-Oracle/iomap-writethrough-for-O_SYNC-writes/20210811-105421
base:    92d00774360dfd4151f15ab9905c643347b9f242
:::::: branch date: 16 hours ago
:::::: commit date: 16 hours ago
config: x86_64-randconfig-c001-20210810 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
d39ebdae674c8efc84ebe8dc32716ec353220530)
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
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # 
https://github.com/0day-ci/linux/commit/eaa6452e467c4c6d3b434da81ede9b3a5b9fbb0d
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Matthew-Wilcox-Oracle/iomap-writethrough-for-O_SYNC-writes/20210811-105421
        git checkout eaa6452e467c4c6d3b434da81ede9b3a5b9fbb0d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/udf/super.c:1679:6: note: Assuming field 'part_descs_loc' is non-null
           if (!data.part_descs_loc)
               ^~~~~~~~~~~~~~~~~~~~
   fs/udf/super.c:1679:2: note: Taking false branch
           if (!data.part_descs_loc)
           ^
   fs/udf/super.c:1686:11: note: 'done' is false
           for (; (!done && block <= lastblock); block++) {
                    ^~~~
   fs/udf/super.c:1686:10: note: Left side of '&&' is true
           for (; (!done && block <= lastblock); block++) {
                   ^
   fs/udf/super.c:1686:19: note: Assuming 'block' is <= 'lastblock'
           for (; (!done && block <= lastblock); block++) {
                            ^~~~~~~~~~~~~~~~~~
   fs/udf/super.c:1686:2: note: Loop condition is true.  Entering loop body
           for (; (!done && block <= lastblock); block++) {
           ^
   fs/udf/super.c:1688:7: note: Assuming 'bh' is non-null
                   if (!bh)
                       ^~~
   fs/udf/super.c:1688:3: note: Taking false branch
                   if (!bh)
                   ^
   fs/udf/super.c:1694:3: note: Control jumps to 'case 7:'  at line 1717
                   switch (ident) {
                   ^
   fs/udf/super.c:1720:8: note: Assuming the condition is true
                           if (IS_ERR(curr)) {
                               ^~~~~~~~~~~~
   fs/udf/super.c:1720:4: note: Taking true branch
                           if (IS_ERR(curr)) {
                           ^
   fs/udf/super.c:1723:5: note: Control jumps to line 1768
                                   goto out;
                                   ^
   fs/udf/super.c:1769:2: note: Address of stack memory associated with local 
variable 'data' returned to caller
           return ret;
           ^      ~~~
   fs/udf/super.c:1769:2: warning: Use of memory after it is freed 
[clang-analyzer-unix.Malloc]
           return ret;
           ^
   fs/udf/super.c:1800:8: note: Calling 'udf_process_sequence'
           ret = udf_process_sequence(sb, main_s, main_e, fileset);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/udf/super.c:1679:6: note: Assuming field 'part_descs_loc' is non-null
           if (!data.part_descs_loc)
               ^~~~~~~~~~~~~~~~~~~~
   fs/udf/super.c:1679:2: note: Taking false branch
           if (!data.part_descs_loc)
           ^
   fs/udf/super.c:1686:11: note: 'done' is false
           for (; (!done && block <= lastblock); block++) {
                    ^~~~
   fs/udf/super.c:1686:10: note: Left side of '&&' is true
           for (; (!done && block <= lastblock); block++) {
                   ^
   fs/udf/super.c:1686:19: note: Assuming 'block' is <= 'lastblock'
           for (; (!done && block <= lastblock); block++) {
                            ^~~~~~~~~~~~~~~~~~
   fs/udf/super.c:1686:2: note: Loop condition is true.  Entering loop body
           for (; (!done && block <= lastblock); block++) {
           ^
   fs/udf/super.c:1688:7: note: Assuming 'bh' is non-null
                   if (!bh)
                       ^~~
   fs/udf/super.c:1688:3: note: Taking false branch
                   if (!bh)
                   ^
   fs/udf/super.c:1694:3: note: Control jumps to 'case 5:'  at line 1718
                   switch (ident) {
                   ^
   fs/udf/super.c:1720:4: note: Taking true branch
                           if (IS_ERR(curr)) {
                           ^
   fs/udf/super.c:1723:5: note: Control jumps to line 1768
                                   goto out;
                                   ^
   fs/udf/super.c:1768:2: note: Memory is released
           kfree(data.part_descs_loc);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/udf/super.c:1769:2: note: Use of memory after it is freed
           return ret;
           ^      ~~~
   fs/udf/super.c:2491:10: warning: Although the value stored to 'etype' is 
used in the enclosing expression, the value is never actually read from 'etype' 
[clang-analyzer-deadcode.DeadStores]
           while ((etype = udf_next_aext(table, &epos, &eloc, &elen, 1)) != -1)
                   ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/udf/super.c:2491:10: note: Although the value stored to 'etype' is used 
in the enclosing expression, the value is never actually read from 'etype'
           while ((etype = udf_next_aext(table, &epos, &eloc, &elen, 1)) != -1)
                   ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   7 warnings generated.
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   9 warnings generated.
>> fs/iomap/buffered-io.c:674:15: warning: Value stored to 'blksize' during its 
>> initialization is never read [clang-analyzer-deadcode.DeadStores]
           unsigned int blksize = i_blocksize(inode);
                        ^~~~~~~   ~~~~~~~~~~~~~~~~~~
   fs/iomap/buffered-io.c:674:15: note: Value stored to 'blksize' during its 
initialization is never read
           unsigned int blksize = i_blocksize(inode);
                        ^~~~~~~   ~~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   7 warnings generated.
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   7 warnings generated.
   Suppressed 7 warnings (7 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   9 warnings generated.
   fs/proc/base.c:282:3: warning: Value stored to 'env_start' is never read 
[clang-analyzer-deadcode.DeadStores]
                   env_start = env_end = arg_end;
                   ^           ~~~~~~~~~~~~~~~~~
   fs/proc/base.c:282:3: note: Value stored to 'env_start' is never read
                   env_start = env_end = arg_end;
                   ^           ~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   9 warnings generated.
   mm/swap_state.c:165:9: warning: Value stored to 'entry' during its 
initialization is never read [clang-analyzer-deadcode.DeadStores]
                   void *entry = xas_store(&xas, shadow);
                         ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~
   mm/swap_state.c:165:9: note: Value stored to 'entry' during its 
initialization is never read
                   void *entry = xas_store(&xas, shadow);
                         ^~~~~   ~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   10 warnings generated.
   mm/swapfile.c:533:28: warning: Value stored to 'ci' during its 
initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct swap_cluster_info *ci = si->cluster_info + idx;
                                     ^~   ~~~~~~~~~~~~~~~~~~~~~~
   mm/swapfile.c:533:28: note: Value stored to 'ci' during its initialization 
is never read
           struct swap_cluster_info *ci = si->cluster_info + idx;
                                     ^~   ~~~~~~~~~~~~~~~~~~~~~~
   mm/swapfile.c:1322:2: warning: Value stored to 'count' is never read 
[clang-analyzer-deadcode.DeadStores]
           count = p->swap_map[offset];
           ^       ~~~~~~~~~~~~~~~~~~~
   mm/swapfile.c:1322:2: note: Value stored to 'count' is never read
           count = p->swap_map[offset];
           ^       ~~~~~~~~~~~~~~~~~~~
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   8 warnings generated.
   Suppressed 8 warnings (8 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   17 warnings generated.
   include/linux/jhash.h:127:5: warning: Assigned value is garbage or undefined 
[clang-analyzer-core.uninitialized.Assign]
                   b += k[1];
                     ^
   mm/hugetlb.c:4879:6: note: Assuming the condition is false
           if (is_vma_resv_set(vma, HPAGE_RESV_UNMAPPED)) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   mm/hugetlb.c:4879:2: note: Taking false branch
           if (is_vma_resv_set(vma, HPAGE_RESV_UNMAPPED)) {
           ^
   mm/hugetlb.c:4891:6: note: Assuming 'idx' is < 'size'
           if (idx >= size)
               ^~~~~~~~~~~
   mm/hugetlb.c:4891:2: note: Taking false branch
           if (idx >= size)
           ^
   mm/hugetlb.c:4896:6: note: Assuming 'page' is null
           if (!page) {

vim +/blksize +674 fs/iomap/buffered-io.c

afc51aaa22f26cb Darrick J. Wong         2019-07-15  661  
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  662) /* Rearrange file so 
we don't need this forward declaration */
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  663) static struct 
iomap_ioend *iomap_add_to_ioend(struct inode *inode,
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  664)                loff_t 
pos, size_t len, struct page *page,
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  665)                struct 
iomap_page *iop, struct iomap *iomap,
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  666)                struct 
iomap_ioend *ioend, struct writeback_control *wbc,
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  667)                struct 
list_head *iolist);
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  668) 
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  669) /* Returns true if we 
can skip dirtying the page */
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  670) static bool 
iomap_write_through(struct iomap_write_ctx *iwc,
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  671)                struct 
iomap *iomap, struct inode *inode, struct page *page,
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  672)                loff_t 
pos, size_t len)
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  673) {
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11 @674)        unsigned int 
blksize = i_blocksize(inode);
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  675) 
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  676)        if (!iwc || 
!iwc->write_through)
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  677)                return 
false;
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  678)        if 
(PageDirty(page))
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  679)                return 
true;
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  680)        if 
(PageWriteback(page))
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  681)                return 
false;
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  682) 
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  683)        /* Can't 
allocate blocks here because we don't have ->prepare_ioend */
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  684)        if (iomap->type 
!= IOMAP_MAPPED || iomap->type != IOMAP_UNWRITTEN ||
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  685)            
iomap->flags & IOMAP_F_SHARED)
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  686)                return 
false;
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  687) 
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  688)        len = 
round_up(pos + len - 1, blksize);
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  689)        pos = 
round_down(pos, blksize);
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  690)        len -= pos;
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  691)        iwc->ioend = 
iomap_add_to_ioend(inode, pos, len, page,
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  692)                        
iomap_page_create(inode, page), iomap, iwc->ioend, NULL,
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  693)                        
&iwc->iolist);
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  694)        
set_page_writeback(page);
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  695)        return true;
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  696) }
eaa6452e467c4c6 Matthew Wilcox (Oracle  2021-08-11  697) 

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to