All of lore.kernel.org
 help / color / mirror / Atom feed
* [djwong-xfs:refactor-log-recovery 299/314] fs/xfs/xfs_buf_item.c:1372 xlog_recover_buffer_pass1() error: potential null dereference 'bcp'. (kmem_alloc returns null)
@ 2020-04-13 12:43 kbuild test robot
  0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2020-04-13 12:43 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3009 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git refactor-log-recovery
head:   2dcdc305cfc2b8b1beee483cf8ae5c674d9fac86
commit: 06450afc33740b8a0d2d62b483595f9c11c0fb8b [299/314] xfs: refactor log recovery item dispatch for pass1 commit functions

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>

smatch warnings:
fs/xfs/xfs_buf_item.c:1372 xlog_recover_buffer_pass1() error: potential null dereference 'bcp'.  (kmem_alloc returns null)

vim +/bcp +1372 fs/xfs/xfs_buf_item.c

  1321	
  1322	/*
  1323	 * Build up the table of buf cancel records so that we don't replay
  1324	 * cancelled data in the second pass.  For buffer records that are
  1325	 * not cancel records, there is nothing to do here so we just return.
  1326	 *
  1327	 * If we get a cancel record which is already in the table, this indicates
  1328	 * that the buffer was cancelled multiple times.  In order to ensure
  1329	 * that during pass 2 we keep the record in the table until we reach its
  1330	 * last occurrence in the log, we keep a reference count in the cancel
  1331	 * record in the table to tell us how many times we expect to see this
  1332	 * record during the second pass.
  1333	 */
  1334	STATIC int
  1335	xlog_recover_buffer_pass1(
  1336		struct xlog			*log,
  1337		struct xlog_recover_item	*item)
  1338	{
  1339		xfs_buf_log_format_t	*buf_f = item->ri_buf[0].i_addr;
  1340		struct list_head	*bucket;
  1341		struct xfs_buf_cancel	*bcp;
  1342	
  1343		if (!xfs_buf_log_check_iovec(&item->ri_buf[0])) {
  1344			xfs_err(log->l_mp, "bad buffer log item size (%d)",
  1345					item->ri_buf[0].i_len);
  1346			return -EFSCORRUPTED;
  1347		}
  1348	
  1349		/*
  1350		 * If this isn't a cancel buffer item, then just return.
  1351		 */
  1352		if (!(buf_f->blf_flags & XFS_BLF_CANCEL)) {
  1353			trace_xfs_log_recover_buf_not_cancel(log, buf_f);
  1354			return 0;
  1355		}
  1356	
  1357		/*
  1358		 * Insert an xfs_buf_cancel record into the hash table of them.
  1359		 * If there is already an identical record, bump its reference count.
  1360		 */
  1361		bucket = XLOG_BUF_CANCEL_BUCKET(log, buf_f->blf_blkno);
  1362		list_for_each_entry(bcp, bucket, bc_list) {
  1363			if (bcp->bc_blkno == buf_f->blf_blkno &&
  1364			    bcp->bc_len == buf_f->blf_len) {
  1365				bcp->bc_refcount++;
  1366				trace_xfs_log_recover_buf_cancel_ref_inc(log, buf_f);
  1367				return 0;
  1368			}
  1369		}
  1370	
  1371		bcp = kmem_alloc(sizeof(struct xfs_buf_cancel), 0);
> 1372		bcp->bc_blkno = buf_f->blf_blkno;
  1373		bcp->bc_len = buf_f->blf_len;
  1374		bcp->bc_refcount = 1;
  1375		list_add_tail(&bcp->bc_list, bucket);
  1376	
  1377		trace_xfs_log_recover_buf_cancel_add(log, buf_f);
  1378		return 0;
  1379	}
  1380	

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-04-13 12:43 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-13 12:43 [djwong-xfs:refactor-log-recovery 299/314] fs/xfs/xfs_buf_item.c:1372 xlog_recover_buffer_pass1() error: potential null dereference 'bcp'. (kmem_alloc returns null) kbuild test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.