[LTP] [PATCH] mmap01: Convert to new API

Jan Stancek jstancek@redhat.com
Fri Nov 15 14:57:53 CET 2024


On Wed, Nov 13, 2024 at 8:15 PM Ricardo B. Marliere via ltp
<ltp@lists.linux.it> wrote:
<snip>
> +       addr = mmap(NULL, page_sz, PROT_READ | PROT_WRITE,
> +                   MAP_FILE | MAP_SHARED, fildes, 0);
> +
> +       if (addr == MAP_FAILED) {
> +               tst_res(TFAIL | TERRNO, "mmap of %s failed", TEMPFILE);
> +               return;
> +       }

Can we use SAFE_MMAP here?

> +
> +       /*
> +        * Check if mapped memory area beyond EOF are
> +        * zeros and changes beyond EOF are not written
> +        * to file.
> +        */
> +       if (memcmp(&addr[file_sz], dummy, page_sz - file_sz))
> +               tst_brk(TFAIL, "mapped memory area contains invalid data");
> +
> +       /*
> +        * Initialize memory beyond file size
> +        */
> +       addr[file_sz] = 'X';
> +       addr[file_sz + 1] = 'Y';
> +       addr[file_sz + 2] = 'Z';
> +
> +       /*
> +        * Synchronize the mapped memory region
> +        * with the file.
> +        */
> +       if (msync(addr, page_sz, MS_SYNC) != 0) {
> +               tst_res(TFAIL | TERRNO, "failed to synchronize mapped file");
> +               return;
> +       }
> +
> +       /*
> +        * Now, search for the pattern 'XYZ' in the temporary file.
> +        * The pattern should not be found and the return value should be 1.
> +        */
> +       if (system(cmd_buffer) != 0) {
> +               tst_res(TPASS, "Functionality of mmap() successful");
> +       } else {
> +               tst_res(TFAIL, "Specified pattern found in file");
> +               return;
>         }
>
> -       cleanup();
> -       tst_exit();
> +       /*
> +        * Clean up things in case we are looping
> +        * Unmap the mapped memory
> +        */
> +       if (munmap(addr, page_sz) != 0) {
> +               tst_res(TFAIL | TERRNO, "munmap failed");
> +               return;
> +       }

and SAFE_MUNMAP here? Otherwise this looks OK to me.

Regards,
Jan



More information about the ltp mailing list