All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [tytso-ext4:pu 7/50] fs/ext4/inline-test.c:1020 test_readpage_inline_link_and_iomap() warn: passing zero to 'PTR_ERR'
Date: Thu, 12 Nov 2026 10:00:36 +0100	[thread overview]
Message-ID: <202611120950.nMRMGeTV-lkp@intel.com> (raw)

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

                 reply	other threads:[~2026-11-12  9:01 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202611120950.nMRMGeTV-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.