On Sat, Dec 04, 2021 at 10:21:07PM +0000, Konstantin Belousov wrote: > The branch main has been updated by kib: > > URL: > https://cgit.FreeBSD.org/src/commit/?id=a4e4132fa3bfadb6047fc0fa5f399f4640460300 > > commit a4e4132fa3bfadb6047fc0fa5f399f4640460300 > Author: Konstantin Belousov <[email protected]> > AuthorDate: 2021-11-29 16:26:31 +0000 > Commit: Konstantin Belousov <[email protected]> > CommitDate: 2021-12-04 22:20:58 +0000 > > swapoff(2): replace special device name argument with a structure > > For compatibility, add a placeholder pointer to the start of the > added struct swapoff_new_args, and use it to distinguish old vs. new > style of syscall invocation.
I agree with Jess that this should be a new syscall. The entry in
sycalls.master now fails to describe the memory footprint of the name
argument. No system call should be created or altered to have a memory
footprint not describable with SAL annotations unless an applicable
standard such as POSIX requires it.
> diff --git a/sys/vm/swap_pager.h b/sys/vm/swap_pager.h
> index 395fbc9957c4..469de3e8eaf4 100644
> --- a/sys/vm/swap_pager.h
> +++ b/sys/vm/swap_pager.h
> @@ -69,6 +69,14 @@ struct swdevt {
> #define SW_UNMAPPED 0x01
> #define SW_CLOSING 0x04
>
> +struct swapoff_new_args {
> + const char *name_old_syscall;
> + const char *name;
> + u_int flags;
> + u_int pad0;
> + uintptr_t pad1[8];
> +};
If you're going to attempt to add future-proofing, please pad with the
assumption that pointers are 128-bit sized and aligned. In this
case, that would mean an uint64_t pad before pad1. If there were done
in place, adding the pad and dropping pad1 to 6 elements would be safe.
-- Brooks
signature.asc
Description: PGP signature
