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, Julia Lawall <julia.lawall@inria.fr>
Subject: kernel/liveupdate/luo_file.c:607:15-23: ERROR: invalid reference to the index variable of the iterator on line 597
Date: Mon, 14 Sep 2026 08:32:42 +0200	[thread overview]
Message-ID: <202609140828.K6j759OF-lkp@intel.com> (raw)

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Evangelos Petrongonas <epetron@amazon.de>
CC: "Mike Rapoport (Microsoft)" <rppt@kernel.org>
CC: Michal Clapinski <mclapinski@google.com>
CC: "Pratyush Yadav (Google)" <pratyush@kernel.org>
CC: Pasha Tatashin <pasha.tatashin@soleen.com>

Hi Evangelos,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   704340f1cd0dcef829eb62f5b48ae95a2ce17bdf
commit: c6073743d0c7f011461bc542c9112180471affad kho: make preserved pages compatible with deferred struct page init
date:   4 months ago
:::::: branch date: 6 hours ago
:::::: commit date: 4 months ago
config: x86_64-randconfig-103-20260914 (https://download.01.org/0day-ci/archive/20260914/202609140828.K6j759OF-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0

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
| Fixes: c6073743d0c7 ("kho: make preserved pages compatible with deferred struct page init")
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Julia Lawall <julia.lawall@inria.fr>
| Closes: https://lore.kernel.org/r/202609140828.K6j759OF-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> kernel/liveupdate/luo_file.c:607:15-23: ERROR: invalid reference to the index variable of the iterator on line 597

vim +607 kernel/liveupdate/luo_file.c

7c722a7f44e0c1 Pasha Tatashin          2025-11-25  560  
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  561  /**
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  562   * luo_retrieve_file - Restores a preserved file from a file_set by its token.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  563   * @file_set: The file_set from which to retrieve the file.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  564   * @token:    The unique token identifying the file to be restored.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  565   * @filep:    Output parameter; on success, this is populated with a pointer
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  566   *            to the newly retrieved 'struct file'.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  567   *
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  568   * This function is the primary mechanism for recreating a file in the new
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  569   * kernel after a live update. It searches the file_set's list of deserialized
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  570   * files for an entry matching the provided @token.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  571   *
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  572   * The operation is idempotent: if a file has already been successfully
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  573   * retrieved, this function will simply return a pointer to the existing
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  574   * 'struct file' and report success without re-executing the retrieve
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  575   * operation. This is handled by checking the 'retrieved' flag under a lock.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  576   *
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  577   * File retrieval can happen in any order; it is not bound by the order of
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  578   * preservation.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  579   *
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  580   * Context: Can be called from an ioctl or other in-kernel code in the new
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  581   *          kernel.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  582   * Return: 0 on success. Returns a negative errno on failure:
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  583   *         -ENOENT if no file with the matching token is found.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  584   *         Any error code returned by the handler's .retrieve() op.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  585   */
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  586  int luo_retrieve_file(struct luo_file_set *file_set, u64 token,
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  587  		      struct file **filep)
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  588  {
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  589  	struct liveupdate_file_op_args args = {0};
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  590  	struct luo_file *luo_file;
b2135d1cb0e368 Dan Carpenter           2025-11-28  591  	bool found = false;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  592  	int err;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  593  
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  594  	if (list_empty(&file_set->files_list))
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  595  		return -ENOENT;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  596  
7c722a7f44e0c1 Pasha Tatashin          2025-11-25 @597  	list_for_each_entry(luo_file, &file_set->files_list, list) {
b2135d1cb0e368 Dan Carpenter           2025-11-28  598  		if (luo_file->token == token) {
b2135d1cb0e368 Dan Carpenter           2025-11-28  599  			found = true;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  600  			break;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  601  		}
b2135d1cb0e368 Dan Carpenter           2025-11-28  602  	}
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  603  
b2135d1cb0e368 Dan Carpenter           2025-11-28  604  	if (!found)
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  605  		return -ENOENT;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  606  
7c722a7f44e0c1 Pasha Tatashin          2025-11-25 @607  	guard(mutex)(&luo_file->mutex);
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  608) 	if (luo_file->retrieve_status < 0) {
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  609) 		/* Retrieve was attempted and it failed. Return the error code. */
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  610) 		return luo_file->retrieve_status;
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  611) 	}
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  612) 
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  613) 	if (luo_file->retrieve_status > 0) {
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  614  		/*
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  615  		 * Someone is asking for this file again, so get a reference
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  616  		 * for them.
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  617  		 */
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  618  		get_file(luo_file->file);
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  619  		*filep = luo_file->file;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  620  		return 0;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  621  	}
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  622  
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  623  	args.handler = luo_file->fh;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  624  	args.serialized_data = luo_file->serialized_data;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  625  	err = luo_file->fh->ops->retrieve(&args);
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  626) 	if (err) {
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  627) 		/* Keep the error code for later use. */
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  628) 		luo_file->retrieve_status = err;
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  629) 		return err;
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  630) 	}
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  631  
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  632) 	luo_file->file = args.file;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  633  	/* Get reference so we can keep this file in LUO until finish */
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  634  	get_file(luo_file->file);
00d0b372374f25 Pasha Tatashin          2026-03-26  635  
00d0b372374f25 Pasha Tatashin          2026-03-26  636  	WARN_ON(xa_insert(&luo_preserved_files,
00d0b372374f25 Pasha Tatashin          2026-03-26  637  			  luo_get_id(luo_file->fh, luo_file->file),
00d0b372374f25 Pasha Tatashin          2026-03-26  638  			  luo_file->file, GFP_KERNEL));
00d0b372374f25 Pasha Tatashin          2026-03-26  639  
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  640  	*filep = luo_file->file;
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  641) 	luo_file->retrieve_status = 1;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  642  
f85b1c6af5bc38 Pratyush Yadav (Google  2026-02-16  643) 	return 0;
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  644  }
7c722a7f44e0c1 Pasha Tatashin          2025-11-25  645  

:::::: The code at line 607 was first introduced by commit
:::::: 7c722a7f44e0c1f9714084152226bc7bd644b7e3 liveupdate: luo_file: implement file systems callbacks

:::::: TO: Pasha Tatashin <pasha.tatashin@soleen.com>
:::::: CC: Andrew Morton <akpm@linux-foundation.org>

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

                 reply	other threads:[~2026-09-14  6:33 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=202609140828.K6j759OF-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=julia.lawall@inria.fr \
    --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.