All of lore.kernel.org
 help / color / mirror / Atom feed
* [tytso-ext4:pu 7/50] fs/ext4/inline-test.c:1020 test_readpage_inline_link_and_iomap() warn: passing zero to 'PTR_ERR'
@ 2026-11-12  9:00 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-11-12  9:00 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

Unfiltered warning: this smatch report is sent as-is and has not been
reviewed for false positives, so please treat it with due skepticism.

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-ext4@vger.kernel.org
TO: "Theodore Ts'o" <tytso@mit.edu>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git pu
head:   246d715a48c25a74ac372dda5e10d8f69f89b50a
commit: dd235149d6326ab5c8f8b7622f4ade2671b36cb4 [7/50] ext4: add KUnit tests for fs/ext4/inline.c
:::::: branch date: 16 hours ago
:::::: commit date: 16 hours ago
config: powerpc-randconfig-2200-20261112 (https://download.01.org/0day-ci/archive/20261112/202611120950.nMRMGeTV-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 8621950157210c1fa68f20f0614cb51310ec9dff)
smatch: v0.5.0-9187-g5189e3fb

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202611120950.nMRMGeTV-lkp@intel.com/

smatch warnings:
fs/ext4/inline-test.c:1020 test_readpage_inline_link_and_iomap() warn: passing zero to 'PTR_ERR'

vim +/PTR_ERR +1020 fs/ext4/inline-test.c

dd235149d6326a Theodore Ts'o 2026-11-05   871  
dd235149d6326a Theodore Ts'o 2026-11-05   872  /* =========================================================================
dd235149d6326a Theodore Ts'o 2026-11-05   873   * 3. Reading Inline Data, Symlinks, and iomap Tests
dd235149d6326a Theodore Ts'o 2026-11-05   874   * =========================================================================
dd235149d6326a Theodore Ts'o 2026-11-05   875   */
dd235149d6326a Theodore Ts'o 2026-11-05   876  
dd235149d6326a Theodore Ts'o 2026-11-05   877  static void test_readpage_inline_link_and_iomap(struct kunit *test)
dd235149d6326a Theodore Ts'o 2026-11-05   878  {
dd235149d6326a Theodore Ts'o 2026-11-05   879  	struct inline_test_ctx *ctx = test->priv;
dd235149d6326a Theodore Ts'o 2026-11-05   880  	struct inode *inode = &ctx->ei.vfs_inode;
dd235149d6326a Theodore Ts'o 2026-11-05   881  	struct folio *folio;
dd235149d6326a Theodore Ts'o 2026-11-05   882  	struct iomap iomap = { 0 };
dd235149d6326a Theodore Ts'o 2026-11-05   883  	char content[85];
dd235149d6326a Theodore Ts'o 2026-11-05   884  	const char *short_link = "/usr/bin/python3";
dd235149d6326a Theodore Ts'o 2026-11-05   885  	char long_link[85];
dd235149d6326a Theodore Ts'o 2026-11-05   886  	char *target;
dd235149d6326a Theodore Ts'o 2026-11-05   887  	void *kaddr;
dd235149d6326a Theodore Ts'o 2026-11-05   888  	int i, ret;
dd235149d6326a Theodore Ts'o 2026-11-05   889  
dd235149d6326a Theodore Ts'o 2026-11-05   890  	for (i = 0; i < sizeof(content); i++)
dd235149d6326a Theodore Ts'o 2026-11-05   891  		content[i] = (char)('0' + (i % 10));
dd235149d6326a Theodore Ts'o 2026-11-05   892  
dd235149d6326a Theodore Ts'o 2026-11-05   893  	/* 1. ext4_readpage_inline and ext4_inline_data_iomap on non-inline inode -> -EAGAIN */
dd235149d6326a Theodore Ts'o 2026-11-05   894  	folio = __filemap_get_folio(&inode->i_data, 0,
dd235149d6326a Theodore Ts'o 2026-11-05   895  				    FGP_LOCK | FGP_ACCESSED | FGP_CREAT,
dd235149d6326a Theodore Ts'o 2026-11-05   896  				    GFP_KERNEL);
dd235149d6326a Theodore Ts'o 2026-11-05   897  	KUNIT_ASSERT_FALSE(test, IS_ERR(folio));
dd235149d6326a Theodore Ts'o 2026-11-05   898  	ret = ext4_readpage_inline(inode, folio);
dd235149d6326a Theodore Ts'o 2026-11-05   899  	KUNIT_EXPECT_EQ(test, ret, -EAGAIN);
dd235149d6326a Theodore Ts'o 2026-11-05   900  	folio_unlock(folio);
dd235149d6326a Theodore Ts'o 2026-11-05   901  	folio_put(folio);
dd235149d6326a Theodore Ts'o 2026-11-05   902  
dd235149d6326a Theodore Ts'o 2026-11-05   903  	ret = ext4_inline_data_iomap(inode, &iomap);
dd235149d6326a Theodore Ts'o 2026-11-05   904  	KUNIT_EXPECT_EQ(test, ret, -EAGAIN);
dd235149d6326a Theodore Ts'o 2026-11-05   905  
dd235149d6326a Theodore Ts'o 2026-11-05   906  	/* 2. Create 85-byte inline file and test ext4_readpage_inline on index 0 */
dd235149d6326a Theodore Ts'o 2026-11-05   907  	truncate_inode_pages(&inode->i_data, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   908  	ret = create_inline_file(inode, content, sizeof(content));
dd235149d6326a Theodore Ts'o 2026-11-05   909  	KUNIT_ASSERT_EQ(test, ret, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   910  	truncate_inode_pages(&inode->i_data, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   911  
dd235149d6326a Theodore Ts'o 2026-11-05   912  	folio = __filemap_get_folio(&inode->i_data, 0,
dd235149d6326a Theodore Ts'o 2026-11-05   913  				    FGP_LOCK | FGP_ACCESSED | FGP_CREAT,
dd235149d6326a Theodore Ts'o 2026-11-05   914  				    GFP_KERNEL);
dd235149d6326a Theodore Ts'o 2026-11-05   915  	KUNIT_ASSERT_FALSE(test, IS_ERR(folio));
dd235149d6326a Theodore Ts'o 2026-11-05   916  	ret = ext4_readpage_inline(inode, folio);
dd235149d6326a Theodore Ts'o 2026-11-05   917  	KUNIT_EXPECT_EQ(test, ret, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   918  	KUNIT_EXPECT_TRUE(test, folio_test_uptodate(folio));
dd235149d6326a Theodore Ts'o 2026-11-05   919  	KUNIT_EXPECT_FALSE(test, folio_test_locked(folio));
dd235149d6326a Theodore Ts'o 2026-11-05   920  
dd235149d6326a Theodore Ts'o 2026-11-05   921  	kaddr = kmap_local_folio(folio, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   922  	KUNIT_EXPECT_MEMEQ(test, kaddr, content, sizeof(content));
dd235149d6326a Theodore Ts'o 2026-11-05   923  	/* Verify zero-padding past inline_size */
dd235149d6326a Theodore Ts'o 2026-11-05   924  	KUNIT_EXPECT_EQ(test, ((char *)kaddr)[sizeof(content)], 0);
dd235149d6326a Theodore Ts'o 2026-11-05   925  	KUNIT_EXPECT_EQ(test, ((char *)kaddr)[PAGE_SIZE - 1], 0);
dd235149d6326a Theodore Ts'o 2026-11-05   926  	kunmap_local(kaddr);
dd235149d6326a Theodore Ts'o 2026-11-05   927  	folio_put(folio);
dd235149d6326a Theodore Ts'o 2026-11-05   928  
dd235149d6326a Theodore Ts'o 2026-11-05   929  	/* 3. ext4_readpage_inline on folio->index > 0 zeros the folio and marks uptodate */
dd235149d6326a Theodore Ts'o 2026-11-05   930  	folio = __filemap_get_folio(&inode->i_data, 1,
dd235149d6326a Theodore Ts'o 2026-11-05   931  				    FGP_LOCK | FGP_ACCESSED | FGP_CREAT,
dd235149d6326a Theodore Ts'o 2026-11-05   932  				    GFP_KERNEL);
dd235149d6326a Theodore Ts'o 2026-11-05   933  	KUNIT_ASSERT_FALSE(test, IS_ERR(folio));
dd235149d6326a Theodore Ts'o 2026-11-05   934  	kaddr = kmap_local_folio(folio, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   935  	memset(kaddr, 0xff, PAGE_SIZE);
dd235149d6326a Theodore Ts'o 2026-11-05   936  	kunmap_local(kaddr);
dd235149d6326a Theodore Ts'o 2026-11-05   937  
dd235149d6326a Theodore Ts'o 2026-11-05   938  	ret = ext4_readpage_inline(inode, folio);
dd235149d6326a Theodore Ts'o 2026-11-05   939  	KUNIT_EXPECT_EQ(test, ret, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   940  	KUNIT_EXPECT_TRUE(test, folio_test_uptodate(folio));
dd235149d6326a Theodore Ts'o 2026-11-05   941  	kaddr = kmap_local_folio(folio, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   942  	KUNIT_EXPECT_EQ(test, ((unsigned char *)kaddr)[0], 0);
dd235149d6326a Theodore Ts'o 2026-11-05   943  	kunmap_local(kaddr);
dd235149d6326a Theodore Ts'o 2026-11-05   944  	folio_put(folio);
dd235149d6326a Theodore Ts'o 2026-11-05   945  
dd235149d6326a Theodore Ts'o 2026-11-05   946  	/* 4. ext4_readpage_inline when ext4_get_inode_loc fails -> propagates error */
dd235149d6326a Theodore Ts'o 2026-11-05   947  	truncate_inode_pages(&inode->i_data, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   948  	ctx->get_inode_loc_err = -EIO;
dd235149d6326a Theodore Ts'o 2026-11-05   949  	folio = __filemap_get_folio(&inode->i_data, 0,
dd235149d6326a Theodore Ts'o 2026-11-05   950  				    FGP_LOCK | FGP_ACCESSED | FGP_CREAT,
dd235149d6326a Theodore Ts'o 2026-11-05   951  				    GFP_KERNEL);
dd235149d6326a Theodore Ts'o 2026-11-05   952  	KUNIT_ASSERT_FALSE(test, IS_ERR(folio));
dd235149d6326a Theodore Ts'o 2026-11-05   953  	ret = ext4_readpage_inline(inode, folio);
dd235149d6326a Theodore Ts'o 2026-11-05   954  	KUNIT_EXPECT_EQ(test, ret, -EIO);
dd235149d6326a Theodore Ts'o 2026-11-05   955  	folio_put(folio);
dd235149d6326a Theodore Ts'o 2026-11-05   956  	ctx->get_inode_loc_err = 0;
dd235149d6326a Theodore Ts'o 2026-11-05   957  
dd235149d6326a Theodore Ts'o 2026-11-05   958  	/*
dd235149d6326a Theodore Ts'o 2026-11-05   959  	 * 5. ext4_readpage_inline when i_inline_size > PAGE_SIZE -> -EFSCORRUPTED.
dd235149d6326a Theodore Ts'o 2026-11-05   960  	 * i_inline_size is a u16, so it can only exceed PAGE_SIZE when
dd235149d6326a Theodore Ts'o 2026-11-05   961  	 * PAGE_SIZE < U16_MAX (e.g. 4KB, 8KB, 16KB, or 32KB base pages).
dd235149d6326a Theodore Ts'o 2026-11-05   962  	 */
dd235149d6326a Theodore Ts'o 2026-11-05   963  	if (PAGE_SIZE < U16_MAX) {
dd235149d6326a Theodore Ts'o 2026-11-05   964  		truncate_inode_pages(&inode->i_data, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   965  		ctx->ei.i_inline_size = U16_MAX;
dd235149d6326a Theodore Ts'o 2026-11-05   966  		i_size_write(inode, U16_MAX);
dd235149d6326a Theodore Ts'o 2026-11-05   967  		folio = __filemap_get_folio(&inode->i_data, 0,
dd235149d6326a Theodore Ts'o 2026-11-05   968  					    FGP_LOCK | FGP_ACCESSED | FGP_CREAT,
dd235149d6326a Theodore Ts'o 2026-11-05   969  					    GFP_KERNEL);
dd235149d6326a Theodore Ts'o 2026-11-05   970  		KUNIT_ASSERT_FALSE(test, IS_ERR(folio));
dd235149d6326a Theodore Ts'o 2026-11-05   971  		ret = ext4_readpage_inline(inode, folio);
dd235149d6326a Theodore Ts'o 2026-11-05   972  		KUNIT_EXPECT_EQ(test, ret, -EFSCORRUPTED);
dd235149d6326a Theodore Ts'o 2026-11-05   973  		folio_put(folio);
dd235149d6326a Theodore Ts'o 2026-11-05   974  		ctx->ei.i_inline_size = sizeof(content);
dd235149d6326a Theodore Ts'o 2026-11-05   975  		i_size_write(inode, sizeof(content));
dd235149d6326a Theodore Ts'o 2026-11-05   976  	}
dd235149d6326a Theodore Ts'o 2026-11-05   977  
dd235149d6326a Theodore Ts'o 2026-11-05   978  	/* 6. ext4_inline_data_iomap populates IOMAP_INLINE with inline address/len */
dd235149d6326a Theodore Ts'o 2026-11-05   979  	memset(&iomap, 0, sizeof(iomap));
dd235149d6326a Theodore Ts'o 2026-11-05   980  	ret = ext4_inline_data_iomap(inode, &iomap);
dd235149d6326a Theodore Ts'o 2026-11-05   981  	KUNIT_EXPECT_EQ(test, ret, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   982  	KUNIT_EXPECT_EQ(test, iomap.type, (u16)IOMAP_INLINE);
dd235149d6326a Theodore Ts'o 2026-11-05   983  	KUNIT_EXPECT_EQ(test, iomap.offset, 0ULL);
dd235149d6326a Theodore Ts'o 2026-11-05   984  	KUNIT_EXPECT_EQ(test, iomap.length, (u64)sizeof(content));
dd235149d6326a Theodore Ts'o 2026-11-05   985  	KUNIT_EXPECT_EQ(test, iomap.addr,
dd235149d6326a Theodore Ts'o 2026-11-05   986  			((u64)ctx->iloc_bh.b_blocknr << TEST_BLOCK_BITS) +
dd235149d6326a Theodore Ts'o 2026-11-05   987  			offsetof(struct ext4_inode, i_block));
dd235149d6326a Theodore Ts'o 2026-11-05   988  
dd235149d6326a Theodore Ts'o 2026-11-05   989  	/* 7. ext4_inline_data_iomap error when ext4_get_inode_loc fails */
dd235149d6326a Theodore Ts'o 2026-11-05   990  	ctx->get_inode_loc_err = -EIO;
dd235149d6326a Theodore Ts'o 2026-11-05   991  	ret = ext4_inline_data_iomap(inode, &iomap);
dd235149d6326a Theodore Ts'o 2026-11-05   992  	KUNIT_EXPECT_EQ(test, ret, -EIO);
dd235149d6326a Theodore Ts'o 2026-11-05   993  	ctx->get_inode_loc_err = 0;
dd235149d6326a Theodore Ts'o 2026-11-05   994  
dd235149d6326a Theodore Ts'o 2026-11-05   995  	/* 8. ext4_read_inline_link: short symlink (in i_block) and long symlink (in xattr) */
dd235149d6326a Theodore Ts'o 2026-11-05   996  	reset_inode_state(ctx, S_IFLNK | 0777);
dd235149d6326a Theodore Ts'o 2026-11-05   997  	ret = create_inline_file(inode, short_link, strlen(short_link));
dd235149d6326a Theodore Ts'o 2026-11-05   998  	KUNIT_ASSERT_EQ(test, ret, 0);
dd235149d6326a Theodore Ts'o 2026-11-05   999  
dd235149d6326a Theodore Ts'o 2026-11-05  1000  	target = ext4_read_inline_link(inode);
dd235149d6326a Theodore Ts'o 2026-11-05  1001  	KUNIT_ASSERT_FALSE(test, IS_ERR(target));
dd235149d6326a Theodore Ts'o 2026-11-05  1002  	KUNIT_EXPECT_STREQ(test, target, short_link);
dd235149d6326a Theodore Ts'o 2026-11-05  1003  	kfree(target);
dd235149d6326a Theodore Ts'o 2026-11-05  1004  
dd235149d6326a Theodore Ts'o 2026-11-05  1005  	reset_inode_state(ctx, S_IFLNK | 0777);
dd235149d6326a Theodore Ts'o 2026-11-05  1006  	memset(long_link, 'a', sizeof(long_link) - 1);
dd235149d6326a Theodore Ts'o 2026-11-05  1007  	long_link[sizeof(long_link) - 1] = '\0';
dd235149d6326a Theodore Ts'o 2026-11-05  1008  	ret = create_inline_file(inode, long_link, strlen(long_link));
dd235149d6326a Theodore Ts'o 2026-11-05  1009  	KUNIT_ASSERT_EQ(test, ret, 0);
dd235149d6326a Theodore Ts'o 2026-11-05  1010  
dd235149d6326a Theodore Ts'o 2026-11-05  1011  	target = ext4_read_inline_link(inode);
dd235149d6326a Theodore Ts'o 2026-11-05  1012  	KUNIT_ASSERT_FALSE(test, IS_ERR(target));
dd235149d6326a Theodore Ts'o 2026-11-05  1013  	KUNIT_EXPECT_STREQ(test, target, long_link);
dd235149d6326a Theodore Ts'o 2026-11-05  1014  	kfree(target);
dd235149d6326a Theodore Ts'o 2026-11-05  1015  
dd235149d6326a Theodore Ts'o 2026-11-05  1016  	/* ext4_read_inline_link error when ext4_get_inode_loc fails */
dd235149d6326a Theodore Ts'o 2026-11-05  1017  	ctx->get_inode_loc_err = -EIO;
dd235149d6326a Theodore Ts'o 2026-11-05  1018  	target = ext4_read_inline_link(inode);
dd235149d6326a Theodore Ts'o 2026-11-05  1019  	KUNIT_EXPECT_TRUE(test, IS_ERR(target));
dd235149d6326a Theodore Ts'o 2026-11-05 @1020  	KUNIT_EXPECT_EQ(test, PTR_ERR(target), -EIO);
dd235149d6326a Theodore Ts'o 2026-11-05  1021  	ctx->get_inode_loc_err = 0;
dd235149d6326a Theodore Ts'o 2026-11-05  1022  }
dd235149d6326a Theodore Ts'o 2026-11-05  1023  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

only message in thread, other threads:[~2026-11-12  9:01 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-12  9:00 [tytso-ext4:pu 7/50] fs/ext4/inline-test.c:1020 test_readpage_inline_link_and_iomap() warn: passing zero to 'PTR_ERR' kernel 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.