On Mon, Mar 09, 2026 at 11:54:37AM +0000, Pratyush Yadav wrote:
> From: "Pratyush Yadav (Google)" <[email protected]>
>
> A zero-size memfd is a special case of memfd preservation. It takes a
> different path from normal both during preservation and during restore.
> In the serialization structure, the number of folios if zero and the
^ typo: is
> vmalloc array with folios is empty. The restore logic should check for
> this and make sure to not touch the invalid array.
>
> Add a test to make sure this path works as expected. In stage 1, the
> test creates and preserves a memfd without any data. In stage 2, the
> test retrieves the memfd and makes sure it is still without data.
>
> Signed-off-by: Pratyush Yadav (Google) <[email protected]>
> ---
> .../testing/selftests/liveupdate/luo_memfd.c | 47 +++++++++++++++++++
> 1 file changed, 47 insertions(+)
>
> diff --git a/tools/testing/selftests/liveupdate/luo_memfd.c
> b/tools/testing/selftests/liveupdate/luo_memfd.c
> index 52b5f6b16e19..56106cd09978 100644
> --- a/tools/testing/selftests/liveupdate/luo_memfd.c
> +++ b/tools/testing/selftests/liveupdate/luo_memfd.c
> @@ -36,6 +36,9 @@
> #define MEMFD_DATA_BUFFER_SIZE SZ_1M
> #define RANDOM_DATA_FILE "luo_random_data.bin"
>
> +#define ZERO_SESSION_NAME "zero_session"
> +#define ZERO_MEMFD_TOKEN 1
> +
> #define LIVEUPDATE_DEV "/dev/liveupdate"
> static int luo_fd = -1, stage;
>
> @@ -89,6 +92,50 @@ TEST(memfd_data)
> }
> }
>
> +/*
> + * Test that a zero-sized memfd is preserved across live update.
> + */
> +TEST(zero_memfd)
> +{
> + int zero_fd, session;
> + struct liveupdate_session_preserve_fd preserve_arg = { .size =
> sizeof(preserve_arg) };
> + struct liveupdate_session_retrieve_fd retrieve_arg = { .size =
> sizeof(retrieve_arg) };
> +
> + switch (stage) {
> + case 1:
Helper functions? And in other tests that do save and restore too?
Otherwise
Reviewed-by: Mike Rapoport (Microsoft) <[email protected]>
> + session = luo_create_session(luo_fd, ZERO_SESSION_NAME);
> + ASSERT_GE(session, 0);
> +
--
Sincerely yours,
Mike.