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: [ceph-client:testing 3/4] fs/ceph/addr.c:1304 writepages_finish() error: 'folio' dereferencing possible ERR_PTR()
Date: Thu, 12 Nov 2026 23:52:38 +0100	[thread overview]
Message-ID: <202611122322.gfcaK7tl-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: ceph-devel@vger.kernel.org
TO: Xiubo Li <xiubo.li@clyso.com>
CC: Alex Markuze <amarkuze@redhat.com>

tree:   https://github.com/ceph/ceph-client.git testing
head:   6a9830a8f414d3830c584782568d0233be969d09
commit: 7530f81a50bb9749539257fbeccdf037e0ca5fca [3/4] ceph: don't read a folio in for a partial lazy I/O write
:::::: branch date: 7 hours ago
:::::: commit date: 7 hours ago
config: powerpc-randconfig-2200-20261112 (https://download.01.org/0day-ci/archive/20261112/202611122322.gfcaK7tl-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/202611122322.gfcaK7tl-lkp@intel.com/

New smatch warnings:
fs/ceph/addr.c:1304 writepages_finish() error: 'folio' dereferencing possible ERR_PTR()

Old smatch warnings:
arch/powerpc/include/asm/cpu_has_feature.h:38 cpu_has_feature() warn: bitwise AND condition is false here
arch/powerpc/include/asm/cpu_has_feature.h:12 early_cpu_has_feature() warn: bitwise AND condition is false here

vim +/folio +1304 fs/ceph/addr.c

1d3576fd10f0d7 Sage Weil               2009-10-06  1234  
1d3576fd10f0d7 Sage Weil               2009-10-06  1235  /*
1d3576fd10f0d7 Sage Weil               2009-10-06  1236   * async writeback completion handler.
1d3576fd10f0d7 Sage Weil               2009-10-06  1237   *
1d3576fd10f0d7 Sage Weil               2009-10-06  1238   * If we get an error, set the mapping error bit, but not the individual
1d3576fd10f0d7 Sage Weil               2009-10-06  1239   * page error bits.
1d3576fd10f0d7 Sage Weil               2009-10-06  1240   */
85e084feb47349 Ilya Dryomov            2016-04-28  1241  static void writepages_finish(struct ceph_osd_request *req)
1d3576fd10f0d7 Sage Weil               2009-10-06  1242  {
1d3576fd10f0d7 Sage Weil               2009-10-06  1243  	struct inode *inode = req->r_inode;
1d3576fd10f0d7 Sage Weil               2009-10-06  1244  	struct ceph_inode_info *ci = ceph_inode(inode);
38d46409c4639a Xiubo Li                2023-06-12  1245  	struct ceph_client *cl = ceph_inode_to_client(inode);
87060c1089a94f Alex Elder              2013-04-03  1246  	struct ceph_osd_data *osd_data;
5b64640cf65be4 Yan, Zheng              2016-01-07  1247  	int num_pages, total_pages = 0;
5b64640cf65be4 Yan, Zheng              2016-01-07  1248  	int i, j;
5b64640cf65be4 Yan, Zheng              2016-01-07  1249  	int rc = req->r_result;
1d3576fd10f0d7 Sage Weil               2009-10-06  1250  	struct ceph_snap_context *snapc = req->r_snapc;
1d3576fd10f0d7 Sage Weil               2009-10-06  1251  	struct address_space *mapping = inode->i_mapping;
5995d90d2d19f3 Xiubo Li                2023-06-12  1252  	struct ceph_fs_client *fsc = ceph_inode_to_fs_client(inode);
fd7449d937e7fb Viacheslav Dubeyko      2025-02-04  1253  	struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(inode->i_sb);
903f4fec78dd05 Xiubo Li                2021-05-13  1254  	unsigned int len = 0;
5b64640cf65be4 Yan, Zheng              2016-01-07  1255  	bool remove_page;
4ab4c720c9bad1 Alex Markuze            2026-08-20  1256  	struct ceph_journal_info __ji;
5b64640cf65be4 Yan, Zheng              2016-01-07  1257  
4ab4c720c9bad1 Alex Markuze            2026-08-20  1258  	/* OSD callback: reuse existing ctx only. */
4ab4c720c9bad1 Alex Markuze            2026-08-20  1259  	ceph_blog_enter_gfp(fsc, &__ji, GFP_ATOMIC);
4ab4c720c9bad1 Alex Markuze            2026-08-20  1260  
4ab4c720c9bad1 Alex Markuze            2026-08-20  1261  	boutc(cl, "%llx.%llx rc %d\n", ceph_vinop(inode), rc);
26544c623e741a Jeff Layton             2017-04-04  1262  	if (rc < 0) {
5b64640cf65be4 Yan, Zheng              2016-01-07  1263  		mapping_set_error(mapping, rc);
26544c623e741a Jeff Layton             2017-04-04  1264  		ceph_set_error_write(ci);
0b98acd6188309 Ilya Dryomov            2020-09-14  1265  		if (rc == -EBLOCKLISTED)
0b98acd6188309 Ilya Dryomov            2020-09-14  1266  			fsc->blocklisted = true;
26544c623e741a Jeff Layton             2017-04-04  1267  	} else {
26544c623e741a Jeff Layton             2017-04-04  1268  		ceph_clear_error_write(ci);
26544c623e741a Jeff Layton             2017-04-04  1269  	}
1d3576fd10f0d7 Sage Weil               2009-10-06  1270  
79788c698b2904 Sage Weil               2010-02-02  1271  	/*
5b64640cf65be4 Yan, Zheng              2016-01-07  1272  	 * We lost the cache cap, need to truncate the page before
5b64640cf65be4 Yan, Zheng              2016-01-07  1273  	 * it is unlocked, otherwise we'd truncate it later in the
5b64640cf65be4 Yan, Zheng              2016-01-07  1274  	 * page truncation thread, possibly losing some data that
5b64640cf65be4 Yan, Zheng              2016-01-07  1275  	 * raced its way in
79788c698b2904 Sage Weil               2010-02-02  1276  	 */
5b64640cf65be4 Yan, Zheng              2016-01-07  1277  	remove_page = !(ceph_caps_issued(ci) &
5b64640cf65be4 Yan, Zheng              2016-01-07  1278  			(CEPH_CAP_FILE_CACHE|CEPH_CAP_FILE_LAZYIO));
1d3576fd10f0d7 Sage Weil               2009-10-06  1279  
1d3576fd10f0d7 Sage Weil               2009-10-06  1280  	/* clean all pages */
5b64640cf65be4 Yan, Zheng              2016-01-07  1281  	for (i = 0; i < req->r_num_ops; i++) {
642d51fb0775a4 Xiubo Li                2022-05-05  1282  		if (req->r_ops[i].op != CEPH_OSD_OP_WRITE) {
38d46409c4639a Xiubo Li                2023-06-12  1283  			pr_warn_client(cl,
38d46409c4639a Xiubo Li                2023-06-12  1284  				"%llx.%llx incorrect op %d req %p index %d tid %llu\n",
38d46409c4639a Xiubo Li                2023-06-12  1285  				ceph_vinop(inode), req->r_ops[i].op, req, i,
38d46409c4639a Xiubo Li                2023-06-12  1286  				req->r_tid);
5b64640cf65be4 Yan, Zheng              2016-01-07  1287  			break;
642d51fb0775a4 Xiubo Li                2022-05-05  1288  		}
5b64640cf65be4 Yan, Zheng              2016-01-07  1289  
5b64640cf65be4 Yan, Zheng              2016-01-07  1290  		osd_data = osd_req_op_extent_osd_data(req, i);
5b64640cf65be4 Yan, Zheng              2016-01-07  1291  		BUG_ON(osd_data->type != CEPH_OSD_DATA_TYPE_PAGES);
903f4fec78dd05 Xiubo Li                2021-05-13  1292  		len += osd_data->length;
5b64640cf65be4 Yan, Zheng              2016-01-07  1293  		num_pages = calc_pages_for((u64)osd_data->alignment,
5b64640cf65be4 Yan, Zheng              2016-01-07  1294  					   (u64)osd_data->length);
5b64640cf65be4 Yan, Zheng              2016-01-07  1295  		total_pages += num_pages;
5b64640cf65be4 Yan, Zheng              2016-01-07  1296  		for (j = 0; j < num_pages; j++) {
0917a0848325cb Tal Zussman             2026-09-02  1297  			struct folio *folio = page_folio(osd_data->pages[j]);
0917a0848325cb Tal Zussman             2026-09-02  1298  
0917a0848325cb Tal Zussman             2026-09-02  1299  			if (fscrypt_is_bounce_folio(folio)) {
0917a0848325cb Tal Zussman             2026-09-02  1300  				folio = fscrypt_pagecache_folio(folio);
d55207717ded95 Jeff Layton             2022-08-25  1301  				fscrypt_free_bounce_page(osd_data->pages[j]);
0917a0848325cb Tal Zussman             2026-09-02  1302  				osd_data->pages[j] = &folio->page;
d55207717ded95 Jeff Layton             2022-08-25  1303  			}
7530f81a50bb97 Xiubo Li                2026-11-10 @1304  			WARN_ON(!folio_test_uptodate(folio) &&
7530f81a50bb97 Xiubo Li                2026-11-10  1305  				!__ceph_dirty_range(folio->private));
1d3576fd10f0d7 Sage Weil               2009-10-06  1306  
5b64640cf65be4 Yan, Zheng              2016-01-07  1307  			if (atomic_long_dec_return(&fsc->writeback_count) <
5b64640cf65be4 Yan, Zheng              2016-01-07  1308  			     CONGESTION_OFF_THRESH(
5b64640cf65be4 Yan, Zheng              2016-01-07  1309  					fsc->mount_options->congestion_kb))
503d4fa6ee28e8 NeilBrown               2022-03-22  1310  				fsc->write_congested = false;
2baba25019ec56 Yehuda Sadeh            2009-12-18  1311  
471aec0b2849a0 Xiubo Li                2026-10-30  1312  			ceph_put_snap_context(ceph_folio_detach_snapc(folio));
0917a0848325cb Tal Zussman             2026-09-02  1313  			folio_end_writeback(folio);
fd7449d937e7fb Viacheslav Dubeyko      2025-02-04  1314  
fd7449d937e7fb Viacheslav Dubeyko      2025-02-04  1315  			if (atomic64_dec_return(&mdsc->dirty_folios) <= 0) {
fd7449d937e7fb Viacheslav Dubeyko      2025-02-04  1316  				wake_up_all(&mdsc->flush_end_wq);
fd7449d937e7fb Viacheslav Dubeyko      2025-02-04  1317  				WARN_ON(atomic64_read(&mdsc->dirty_folios) < 0);
fd7449d937e7fb Viacheslav Dubeyko      2025-02-04  1318  			}
fd7449d937e7fb Viacheslav Dubeyko      2025-02-04  1319  
4ab4c720c9bad1 Alex Markuze            2026-08-20  1320  			boutc(cl, "unlocking %p\n", folio);
e63dc5c780ba32 Yehuda Sadeh            2010-02-19  1321  
5b64640cf65be4 Yan, Zheng              2016-01-07  1322  			if (remove_page)
af7628d6ec1969 Matthew Wilcox (Oracle  2023-11-17  1323) 				generic_error_remove_folio(inode->i_mapping,
0917a0848325cb Tal Zussman             2026-09-02  1324  							  folio);
e63dc5c780ba32 Yehuda Sadeh            2010-02-19  1325  
0917a0848325cb Tal Zussman             2026-09-02  1326  			folio_unlock(folio);
1d3576fd10f0d7 Sage Weil               2009-10-06  1327  		}
4ab4c720c9bad1 Alex Markuze            2026-08-20  1328  		boutc(cl, "%llx.%llx wrote %llu bytes cleaned %d pages\n",
38d46409c4639a Xiubo Li                2023-06-12  1329  		      ceph_vinop(inode), osd_data->length,
38d46409c4639a Xiubo Li                2023-06-12  1330  		      rc >= 0 ? num_pages : 0);
1d3576fd10f0d7 Sage Weil               2009-10-06  1331  
96ac9158a230e4 John Hubbard            2019-08-08  1332  		release_pages(osd_data->pages, num_pages);
5b64640cf65be4 Yan, Zheng              2016-01-07  1333  	}
5b64640cf65be4 Yan, Zheng              2016-01-07  1334  
903f4fec78dd05 Xiubo Li                2021-05-13  1335  	ceph_update_write_metrics(&fsc->mdsc->metric, req->r_start_latency,
903f4fec78dd05 Xiubo Li                2021-05-13  1336  				  req->r_end_latency, len, rc);
903f4fec78dd05 Xiubo Li                2021-05-13  1337  
b1137e0b3d4bad Alex Markuze            2026-02-10  1338  	if (rc >= 0 && len > 0)
b1137e0b3d4bad Alex Markuze            2026-02-10  1339  		ceph_subvolume_metrics_record_io(mdsc, ci, true, len,
b1137e0b3d4bad Alex Markuze            2026-02-10  1340  						 req->r_start_latency,
b1137e0b3d4bad Alex Markuze            2026-02-10  1341  						 req->r_end_latency);
b1137e0b3d4bad Alex Markuze            2026-02-10  1342  
5b64640cf65be4 Yan, Zheng              2016-01-07  1343  	ceph_put_wrbuffer_cap_refs(ci, total_pages, snapc);
5b64640cf65be4 Yan, Zheng              2016-01-07  1344  
5b64640cf65be4 Yan, Zheng              2016-01-07  1345  	osd_data = osd_req_op_extent_osd_data(req, 0);
87060c1089a94f Alex Elder              2013-04-03  1346  	if (osd_data->pages_from_pool)
a0102bda5bc099 Jeff Layton             2020-07-30  1347  		mempool_free(osd_data->pages, ceph_wb_pagevec_pool);
1d3576fd10f0d7 Sage Weil               2009-10-06  1348  	else
87060c1089a94f Alex Elder              2013-04-03  1349  		kfree(osd_data->pages);
1d3576fd10f0d7 Sage Weil               2009-10-06  1350  	ceph_osdc_put_request(req);
1464de9f813e35 Xiubo Li                2023-05-09  1351  	ceph_dec_osd_stopping_blocker(fsc->mdsc);
4ab4c720c9bad1 Alex Markuze            2026-08-20  1352  	ceph_blog_exit(&__ji);
1d3576fd10f0d7 Sage Weil               2009-10-06  1353  }
1d3576fd10f0d7 Sage Weil               2009-10-06  1354  

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

                 reply	other threads:[~2026-11-12 22:53 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=202611122322.gfcaK7tl-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.