CC: kbuild-...@lists.01.org
BCC: l...@intel.com
In-Reply-To: <20220627060841.244226-4-da...@fromorbit.com>
References: <20220627060841.244226-4-da...@fromorbit.com>
TO: Dave Chinner <da...@fromorbit.com>
TO: linux-...@vger.kernel.org

Hi Dave,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on xfs-linux/for-next]
[also build test WARNING on linus/master v5.19-rc4 next-20220627]
[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/intel-lab-lkp/linux/commits/Dave-Chinner/xfs-lockless-buffer-lookups/20220627-141053
base:   https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next
:::::: branch date: 16 hours ago
:::::: commit date: 16 hours ago
config: x86_64-randconfig-m001-20220627 
(https://download.01.org/0day-ci/archive/20220628/202206280549.pn2aopua-...@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

smatch warnings:
fs/xfs/xfs_buf.c:703 xfs_buf_get_map() error: we previously assumed 'bp' could 
be null (see line 686)

vim +/bp +703 fs/xfs/xfs_buf.c

ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  651  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  652  /*
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  653   * 
Assembles a buffer covering the specified range. The code is optimised for
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  654   * 
cache hits, as metadata intensive workloads will see 3 orders of magnitude
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  655   * 
more hits than misses.
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  656   */
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  657  int
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  658  
xfs_buf_get_map(
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  659     
struct xfs_buftarg      *btp,
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  660     
struct xfs_buf_map      *map,
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  661     
int                     nmaps,
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  662     
xfs_buf_flags_t         flags,
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  663     
struct xfs_buf          **bpp)
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  664  {
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  665     
struct xfs_perag        *pag;
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  666     
struct xfs_buf          *bp = NULL;
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  667     
struct xfs_buf_map      cmap = { .bm_bn = map[0].bm_bn };
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  668     
int                     error;
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  669     
int                     i;
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  670  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  671     
for (i = 0; i < nmaps; i++)
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  672     
        cmap.bm_len += map[i].bm_len;
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  673  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  674     
error = xfs_buf_find_verify(btp, &cmap);
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  675     
if (error)
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  676     
        return error;
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds    2005-04-16  677  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  678     
pag = xfs_perag_get(btp->bt_mount,
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  679     
                    xfs_daddr_to_agno(btp->bt_mount, cmap.bm_bn));
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  680  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  681     
error = xfs_buf_find_fast(pag, &cmap, flags, &bp);
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  682     
if (error && error != -ENOENT)
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  683     
        goto out_put_perag;
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  684  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  685     
/* cache hits always outnumber misses by at least 10:1 */
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27 @686     
if (unlikely(!bp)) {
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  687     
        XFS_STATS_INC(btp->bt_mount, xb_miss_locked);
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  688  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  689     
        if (flags & XBF_INCORE)
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  690     
                goto out_put_perag;
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  691  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  692     
        /* xfs_buf_find_insert() consumes the perag reference. */
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  693     
        error = xfs_buf_find_insert(btp, pag, &cmap, map, nmaps,
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  694     
                        flags, &bp);
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  695     
        if (error)
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  696     
                return error;
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  697     
} else {
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  698     
        XFS_STATS_INC(btp->bt_mount, xb_get_locked);
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  699     
        xfs_perag_put(pag);
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  700     
}
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  701  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  702     
/* We do not hold a perag reference anymore. */
611c99468c7aa1 fs/xfs/xfs_buf.c           Dave Chinner      2012-04-23 @703     
if (!bp->b_addr) {
ce8e922c0e79c8 fs/xfs/linux-2.6/xfs_buf.c Nathan Scott      2006-01-11  704     
        error = _xfs_buf_map_pages(bp, flags);
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds    2005-04-16  705     
        if (unlikely(error)) {
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  706     
                xfs_warn_ratelimited(btp->bt_mount,
93baa55af1a19a fs/xfs/xfs_buf.c           Darrick J. Wong   2020-02-21  707     
                        "%s: failed to map %u pages", __func__,
93baa55af1a19a fs/xfs/xfs_buf.c           Darrick J. Wong   2020-02-21  708     
                        bp->b_page_count);
a8acad70731e7d fs/xfs/xfs_buf.c           Dave Chinner      2012-04-23  709     
                xfs_buf_relse(bp);
3848b5f6709221 fs/xfs/xfs_buf.c           Darrick J. Wong   2020-01-23  710     
                return error;
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds    2005-04-16  711     
        }
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds    2005-04-16  712     
}
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds    2005-04-16  713  
b79f4a1c68bb99 fs/xfs/xfs_buf.c           Dave Chinner      2016-01-12  714     
/*
b79f4a1c68bb99 fs/xfs/xfs_buf.c           Dave Chinner      2016-01-12  715     
 * Clear b_error if this is a lookup from a caller that doesn't expect
b79f4a1c68bb99 fs/xfs/xfs_buf.c           Dave Chinner      2016-01-12  716     
 * valid data to be found in the buffer.
b79f4a1c68bb99 fs/xfs/xfs_buf.c           Dave Chinner      2016-01-12  717     
 */
b79f4a1c68bb99 fs/xfs/xfs_buf.c           Dave Chinner      2016-01-12  718     
if (!(flags & XBF_READ))
b79f4a1c68bb99 fs/xfs/xfs_buf.c           Dave Chinner      2016-01-12  719     
        xfs_buf_ioerror(bp, 0);
b79f4a1c68bb99 fs/xfs/xfs_buf.c           Dave Chinner      2016-01-12  720  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  721     
XFS_STATS_INC(btp->bt_mount, xb_get);
0b1b213fcf3a84 fs/xfs/linux-2.6/xfs_buf.c Christoph Hellwig 2009-12-14  722     
trace_xfs_buf_get(bp, flags, _RET_IP_);
3848b5f6709221 fs/xfs/xfs_buf.c           Darrick J. Wong   2020-01-23  723     
*bpp = bp;
3848b5f6709221 fs/xfs/xfs_buf.c           Darrick J. Wong   2020-01-23  724     
return 0;
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  725  
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  726  
out_put_perag:
ac3a2dcca9b378 fs/xfs/xfs_buf.c           Dave Chinner      2022-06-27  727     
xfs_perag_put(pag);
170041f71596da fs/xfs/xfs_buf.c           Christoph Hellwig 2021-06-07  728     
return error;
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds    2005-04-16  729  }
^1da177e4c3f41 fs/xfs/linux-2.6/xfs_buf.c Linus Torvalds    2005-04-16  730  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to