All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Tarun Sahu" <tarunsahu@google.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	joro@8bytes.org, "Mike Rapoport" <rppt@kernel.org>,
	"Pratyush Yadav" <pratyush@kernel.org>,
	maz@kernel.org, arnd@arndb.de,
	"David Matlack" <dmatlack@google.com>,
	jgg@nvidia.com, robin.murphy@arm.com, loganodell@google.com,
	oupton@kernel.org, kevin.tian@intel.com, alex@shazbot.org,
	dwmw2@infradead.org, pbonzini@redhat.com, seanjc@google.com,
	will@kernel.org, "Pasha Tatashin" <pasha.tatashin@soleen.com>,
	"Alexander Graf" <graf@amazon.com>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	baolu.lu@linux.intel.com
Cc: sagis@google.com, linux-mm@kvack.org, kvmarm@lists.linux.dev,
	linux-pci@vger.kernel.org, kexec@lists.infradead.org,
	skhawaja@google.com, kvm@vger.kernel.org
Subject: Re: [RFC PATCH v2 4/4] mm: memfd_luo: Add the 2-bit pair feature header
Date: Thu, 22 Oct 2026 15:26:21 +0000	[thread overview]
Message-ID: <sashiko-outbox-181698@kernel.org> (raw)
In-Reply-To: <20261021152527.375070-5-tarunsahu@google.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] mm: memfd_luo: missing feature header validation in memfd_luo_finish()
--

commit b960724786ac11078fdfa9ded6bcd2355170cf0b
Author: Tarun Sahu <tarunsahu@google.com>

mm: memfd_luo: Add the 2-bit pair feature header

This commit embeds a 128-byte struct luo_feature_hdr at the start of struct
memfd_luo_ser and defines enum memfd_luo_feature with MEMFD_LUO_FEAT_CORE as
a required feature. It initializes the feature header during
memfd_luo_preserve() and validates it during memfd_luo_retrieve().

> diff --git a/mm/memfd_luo.c b/mm/memfd_luo.c
> index 64f8b8cb75bdb..ea1f4c8cd2591 100644
> --- a/mm/memfd_luo.c
> +++ b/mm/memfd_luo.c

[ ... ]

> @@ -525,6 +531,14 @@ static int memfd_luo_retrieve(struct liveupdate_file_op_args *args)
>  	if (!ser)
>  		return -EINVAL;
>  
> +	err = luo_feature_hdr_validate(&ser->features, memfd_luo_features);
> +	if (err) {
> +		pr_err("memfd_luo_ser feature header validation failed (size=%llu, flags[0]=%#llx): %pe\n",
> +		       ser->features.size, ser->features.flags[0],
> +		       ERR_PTR(err));
> +		goto free_ser;
> +	}
> +
>  	/* Make sure the file only has seals supported by this version. */
>  	if (ser->seals & ~MEMFD_LUO_ALL_SEALS) {
>  		err = -EOPNOTSUPP;

[Severity: Medium]
Here in memfd_luo_retrieve(), ser->features is validated via
luo_feature_hdr_validate() before accessing any MEMFD_LUO_FEAT_CORE fields,
jumping directly to kho_restore_free(ser) on failure.

However, when a preserved memfd is not retrieved in the target kernel before
the session is finished or closed (for example via luo_session_release() ->
luo_session_finish_one() -> luo_file_finish() -> luo_file_finish_one() ->
memfd_luo_finish() with args->retrieve_status == 0), memfd_luo_finish()
reads ser->nr_folios and ser->folios without validating ser->features first:

mm/memfd_luo.c:memfd_luo_finish() {
	if (args->retrieve_status)
		return;

	ser = phys_to_virt(args->serialized_data);
	if (!ser)
		return;

	if (ser->nr_folios) {
		folios_ser = kho_restore_vmalloc(&ser->folios);
		if (!folios_ser)
			goto out;

		memfd_luo_discard_folios(folios_ser, ser->nr_folios);
		vfree(folios_ser);
	}

out:
	kho_restore_free(ser);
}

According to the ABI contract in include/linux/kho/abi/memfd.h, fields of a
LUO_FEAT_REQUIRED feature such as nr_folios and folios are only guaranteed
present once luo_feature_hdr_validate() succeeds.

Should memfd_luo_finish() also call luo_feature_hdr_validate(&ser->features,
memfd_luo_features) and skip to kho_restore_free(ser) if validation fails,
so it does not pass unvalidated MEMFD_LUO_FEAT_CORE fields to
kho_restore_vmalloc() and memfd_luo_discard_folios()?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261021152527.375070-1-tarunsahu@google.com?part=4

      parent reply	other threads:[~2026-10-22 15:26 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-21 15:25 [RFC PATCH v2 0/4] liveupdate: Feature header ABI and named handler Tarun Sahu
2026-10-21 15:25 ` [RFC PATCH v2 1/4] liveupdate: Rename handler compatible to name Tarun Sahu
2026-10-21 17:11   ` Pasha Tatashin
2026-10-21 18:16     ` tarunsahu
2026-10-21 19:11       ` Pasha Tatashin
2026-10-21 19:35         ` tarunsahu
2026-10-23  7:44           ` Mike Rapoport
2026-10-23 21:51             ` tarunsahu
2026-10-22 15:26   ` sashiko-bot
2026-10-21 15:25 ` [RFC PATCH v2 2/4] liveupdate: Select file handler by name in the preserve ioctl Tarun Sahu
2026-10-21 17:17   ` Pasha Tatashin
2026-10-21 23:02     ` David Matlack
2026-10-22  1:14       ` Pasha Tatashin
2026-10-22 17:57         ` David Matlack
2026-10-22 12:50     ` tarunsahu
2026-10-22 13:42       ` Pasha Tatashin
2026-10-22 15:26   ` sashiko-bot
2026-10-21 15:25 ` [RFC PATCH v2 3/4] liveupdate: Replace compatibility string with a 2-bit pair feature header Tarun Sahu
2026-10-21 17:27   ` Pasha Tatashin
2026-10-21 17:40     ` Jason Gunthorpe
2026-10-21 17:55       ` Pasha Tatashin
2026-10-21 18:40     ` tarunsahu
2026-10-21 18:46       ` David Matlack
2026-10-21 18:50         ` Pasha Tatashin
2026-10-21 23:28           ` David Matlack
2026-10-22  1:26             ` Pasha Tatashin
2026-10-22  2:57               ` David Matlack
2026-10-22  3:32                 ` Pasha Tatashin
2026-10-22  3:52                   ` David Matlack
2026-10-22  4:11                     ` Pasha Tatashin
2026-10-22 17:51                       ` David Matlack
2026-10-22 20:53                         ` Pasha Tatashin
2026-10-23 13:50                           ` David Matlack
2026-10-25 20:38                             ` Pasha Tatashin
2026-10-26 20:49                               ` David Matlack
2026-10-27 16:21                                 ` Pasha Tatashin
2026-10-27 17:33                                   ` David Matlack
2026-10-28 17:17                                 ` Pratyush Yadav
2026-10-28 17:24                                   ` David Matlack
2026-10-28 17:47                                     ` Pasha Tatashin
2026-10-28 17:44                                   ` Pasha Tatashin
2026-10-21 23:55   ` David Matlack
2026-10-22  0:04     ` David Matlack
2026-10-26 11:50       ` tarunsahu
2026-10-26 21:14         ` David Matlack
2026-10-26 23:28           ` tarunsahu
2026-10-27  0:01             ` David Matlack
2026-10-27  0:55               ` Tarun Sahu
2026-10-27  3:26                 ` David Matlack
2026-10-27 16:40           ` Pasha Tatashin
2026-10-27 17:37             ` David Matlack
2026-10-27 21:57               ` tarunsahu
2026-10-22 15:26   ` sashiko-bot
2026-10-21 15:25 ` [RFC PATCH v2 4/4] mm: memfd_luo: Add the " Tarun Sahu
2026-10-21 17:38   ` Pasha Tatashin
2026-10-21 23:18     ` David Matlack
2026-10-22  0:41       ` Pasha Tatashin
2026-10-22  2:51         ` David Matlack
2026-10-22  3:50           ` Pasha Tatashin
2026-10-22 15:26   ` sashiko-bot [this message]

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=sashiko-outbox-181698@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=alex@shazbot.org \
    --cc=arnd@arndb.de \
    --cc=baolu.lu@linux.intel.com \
    --cc=bhelgaas@google.com \
    --cc=dmatlack@google.com \
    --cc=dwmw2@infradead.org \
    --cc=graf@amazon.com \
    --cc=jgg@nvidia.com \
    --cc=joro@8bytes.org \
    --cc=kevin.tian@intel.com \
    --cc=kexec@lists.infradead.org \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-mm@kvack.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=loganodell@google.com \
    --cc=maz@kernel.org \
    --cc=oupton@kernel.org \
    --cc=pasha.tatashin@soleen.com \
    --cc=pbonzini@redhat.com \
    --cc=pratyush@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=rppt@kernel.org \
    --cc=sagis@google.com \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=seanjc@google.com \
    --cc=skhawaja@google.com \
    --cc=tarunsahu@google.com \
    --cc=will@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.