From: Pratyush Yadav <pratyush@kernel.org>
To: David Matlack <dmatlack@google.com>
Cc: kexec@lists.infradead.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
linux-mm@kvack.org, Alexander Graf <graf@amazon.com>,
Andrew Morton <akpm@linux-foundation.org>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Christian Brauner <brauner@kernel.org>,
David Hildenbrand <david@kernel.org>,
Hugh Dickins <hughd@google.com>,
Jonathan Corbet <corbet@lwn.net>,
"Liam R. Howlett" <liam@infradead.org>,
Lorenzo Stoakes <ljs@kernel.org>,
Michal Hocko <mhocko@suse.com>, Mike Rapoport <rppt@kernel.org>,
Pasha Tatashin <pasha.tatashin@soleen.com>,
Pratyush Yadav <pratyush@kernel.org>,
Randy Dunlap <rdunlap@infradead.org>,
Samiullah Khawaja <skhawaja@google.com>,
Shuah Khan <skhan@linuxfoundation.org>,
Suren Baghdasaryan <surenb@google.com>,
Vlastimil Babka <vbabka@kernel.org>
Subject: Re: [PATCH v3 05/10] liveupdate: Don't WARN if tracking a retrieved file fails
Date: Wed, 04 Nov 2026 15:32:04 +0100 [thread overview]
Message-ID: <2vxzmrrok6qj.fsf@kernel.org> (raw)
In-Reply-To: <20261103010216.3447716-6-dmatlack@google.com> (David Matlack's message of "Tue, 3 Nov 2026 01:02:11 +0000")
On Tue, Nov 03 2026, David Matlack wrote:
> Handle a failure to add a retrieved file to luo_preserved_files instead
> of triggering a WARN_ON(). Make the failure permanent, and keep the file
> until the file set is finished, like any other retrieved file.
>
> xa_insert() can fail with -ENOMEM, and userspace can trigger that with
> LIVEUPDATE_SESSION_RETRIEVE_FD, so warning about it lets userspace crash
> systems with panic_on_warn.
>
> The handler has already consumed the preserved state when this happens,
> so the retrieve can't be retried. Keeping the file ensures that its
> resources are not released before the file set is finished. Finishing
> the file set then erases the file from luo_preserved_files, which does
> nothing for a file that was never added.
>
> Fixes: 00d0b372374f ("liveupdate: prevent double management of files")
> Signed-off-by: David Matlack <dmatlack@google.com>
> Acked-by: Pasha Tatashin <pasha.tatashin@soleen.com>
> ---
> kernel/liveupdate/luo_file.c | 19 +++++++++++++++----
> 1 file changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/kernel/liveupdate/luo_file.c b/kernel/liveupdate/luo_file.c
> index 908ae124ea5e..5a82e45b9062 100644
> --- a/kernel/liveupdate/luo_file.c
> +++ b/kernel/liveupdate/luo_file.c
> @@ -684,14 +684,25 @@ int luo_retrieve_file(struct luo_file_set *file_set, u64 token, u64 arg,
> return err;
> }
>
> + err = xa_insert(&luo_preserved_files,
> + luo_get_id(luo_file->fh, args.file), args.file,
> + GFP_KERNEL);
> + if (err) {
I think you should do a WARN_ON_ONCE(err == -EBUSY) here. Because if
someone can somehow retrieve the same file twice, something really bad
has happened and must be reported.
> + /*
> + * The handler has consumed the preserved state, so the retrieve
> + * can't be retried. Keep the file until the file set is
> + * finished, so that its resources are released at the same
> + * time as those of other retrieved files.
> + */
> + luo_file->file = args.file;
> + luo_file->retrieve_status = err;
> + return err;
> + }
> +
> luo_file->file = args.file;
> /* Get reference so we can keep this file in LUO until finish */
> get_file(luo_file->file);
>
> - WARN_ON(xa_insert(&luo_preserved_files,
> - luo_get_id(luo_file->fh, luo_file->file),
> - luo_file->file, GFP_KERNEL));
> -
> *filep = luo_file->file;
> luo_file->retrieve_status = 1;
--
Regards,
Pratyush Yadav
next prev parent reply other threads:[~2026-11-04 14:32 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 1:02 [PATCH v3 00/10] liveupdate: Preserve tmpfs files across Live Update David Matlack
2026-11-03 1:02 ` [PATCH v3 01/10] liveupdate: Pass user argument to file preserve and retrieve David Matlack
2026-11-04 1:03 ` sashiko-bot
2026-11-04 13:17 ` Pratyush Yadav
2026-11-03 1:02 ` [PATCH v3 02/10] selftests: liveupdate: Add tests for preserve and retrieve user argument David Matlack
2026-11-04 1:03 ` sashiko-bot
2026-11-04 13:26 ` Pratyush Yadav
2026-11-03 1:02 ` [PATCH v3 03/10] liveupdate: Allow file handlers to mark retrieve failures as retryable David Matlack
2026-11-04 1:03 ` sashiko-bot
2026-11-04 14:12 ` Pratyush Yadav
2026-11-04 16:15 ` Pasha Tatashin
2026-11-03 1:02 ` [PATCH v3 04/10] mm: Rename memfd_luo to shmem_luo David Matlack
2026-11-04 1:03 ` sashiko-bot
2026-11-04 14:25 ` Pratyush Yadav
2026-11-03 1:02 ` [PATCH v3 05/10] liveupdate: Don't WARN if tracking a retrieved file fails David Matlack
2026-11-04 1:03 ` sashiko-bot
2026-11-04 14:32 ` Pratyush Yadav [this message]
2026-11-03 1:02 ` [PATCH v3 06/10] mm/shmem_luo: Don't make early retrieve failures permanent David Matlack
2026-11-04 1:03 ` sashiko-bot
2026-11-04 15:01 ` Pratyush Yadav
2026-11-04 22:28 ` David Matlack
2026-11-03 1:02 ` [PATCH v3 07/10] mm/shmem_luo: Retrieve tmpfs files onto a tmpfs mount chosen by userspace David Matlack
2026-11-04 0:43 ` Pasha Tatashin
2026-11-04 1:03 ` sashiko-bot
2026-11-04 16:27 ` Pratyush Yadav
2026-11-04 22:30 ` David Matlack
2026-11-03 1:02 ` [PATCH v3 08/10] mm/shmem_luo: Allow preserving tmpfs files that are still linked David Matlack
2026-11-04 0:43 ` Pasha Tatashin
2026-11-04 1:03 ` sashiko-bot
2026-11-04 16:45 ` Pratyush Yadav
2026-11-04 22:32 ` David Matlack
2026-11-04 23:38 ` David Matlack
2026-11-03 1:02 ` [PATCH v3 09/10] mm/shmem_luo: Allow retrieving tmpfs files with O_RDONLY David Matlack
2026-11-04 0:43 ` Pasha Tatashin
2026-11-04 1:03 ` sashiko-bot
2026-11-04 16:52 ` Pratyush Yadav
2026-11-04 19:45 ` Pasha Tatashin
2026-11-04 22:35 ` David Matlack
2026-11-03 1:02 ` [PATCH v3 10/10] selftests/liveupdate: Add a test for preserving tmpfs files David Matlack
2026-11-04 0:43 ` Pasha Tatashin
2026-11-04 1:03 ` sashiko-bot
2026-11-04 16:59 ` Pratyush Yadav
2026-11-04 19:37 ` Pasha Tatashin
2026-11-04 22:42 ` David Matlack
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=2vxzmrrok6qj.fsf@kernel.org \
--to=pratyush@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=brauner@kernel.org \
--cc=corbet@lwn.net \
--cc=david@kernel.org \
--cc=dmatlack@google.com \
--cc=graf@amazon.com \
--cc=hughd@google.com \
--cc=kexec@lists.infradead.org \
--cc=liam@infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@suse.com \
--cc=pasha.tatashin@soleen.com \
--cc=rdunlap@infradead.org \
--cc=rppt@kernel.org \
--cc=skhan@linuxfoundation.org \
--cc=skhawaja@google.com \
--cc=surenb@google.com \
--cc=vbabka@kernel.org \
/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.