|
NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | FILES | STANDARDS | HISTORY | CAVEATS | SEE ALSO | COLOPHON |
|
|
|
PR_SET_TAGGED_ADDR_CTRL(2const) PR_SET_TAGGED_ADDR_CTRL(2const)
PR_SET_TAGGED_ADDR_CTRL - control support for passing tagged user-
space addresses to the kernel
Standard C library (libc, -lc)
#include <linux/prctl.h> /* Definition of PR_* constants */
#include <sys/prctl.h>
int prctl(PR_SET_TAGGED_ADDR_CTRL, long mode, 0L, 0L, 0L);
Controls support for passing tagged user-space addresses to the
kernel (i.e., addresses where bits 56—63 are not all zero).
The level of support is selected by support, which can be one of
the following:
0L Addresses that are passed for the purpose of being
dereferenced by the kernel must be untagged.
PR_TAGGED_ADDR_ENABLE
Addresses that are passed for the purpose of being
dereferenced by the kernel may be tagged, with the
exceptions summarized below.
On success, the mode specified in mode is set for the calling
thread.
If prctl(PR_SET_TAGGED_ADDR_CTRL, 0L, 0L, 0L, 0L) fails with
EINVAL, then all addresses passed to the kernel must be untagged.
Irrespective of which mode is set, addresses passed to certain
interfaces must always be untagged:
• brk(2), mmap(2), shmat(2), shmdt(2), and the new_address
argument of mremap(2).
(Prior to Linux 5.6 these accepted tagged addresses, but the
behaviour may not be what you expect. Don't rely on it.)
• ‘polymorphic’ interfaces that accept pointers to arbitrary
types cast to a void * or other generic type, specifically
prctl(), ioctl(2), and in general setsockopt(2) (only certain
specific setsockopt(2) options allow tagged addresses).
This list of exclusions may shrink when moving from one kernel
version to a later kernel version. While the kernel may make some
guarantees for backwards compatibility reasons, for the purposes
of new software the effect of passing tagged addresses to these
interfaces is unspecified.
The mode set by this call is inherited across fork(2) and
clone(2). The mode is reset by execve(2) to 0 (i.e., tagged
addresses not permitted in the user/kernel ABI).
On success, 0 is returned. On error, -1 is returned, and errno is
set to indicate the error.
EINVAL mode is invalid or unsupported.
EINVAL This feature is disabled via /proc/sys/abi/
tagged_addr_disabled.
/proc/sys/abi/tagged_addr_disabled
Linux. arm64 only.
Linux 5.4 (arm64).
This call is primarily intended for use by the run-time
environment. A successful PR_SET_TAGGED_ADDR_CTRL call elsewhere
may crash the calling process. The conditions for using it safely
are complex and system-dependent. Don't use it unless you know
what you are doing.
prctl(2), PR_SET_TAGGED_ADDR_CTRL(2const)
For more information, see the kernel source file
Documentation/arm64/tagged-address-abi.rst.
This page is part of the man-pages (Linux kernel and C library
user-space interface documentation) project. Information about
the project can be found at
⟨https://www.kernel.org/doc/man-pages/⟩. If you have a bug report
for this manual page, see
⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.
This page was obtained from the tarball man-pages-6.15.tar.gz
fetched from
⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on
2025-08-11. If you discover any rendering problems in this HTML
version of the page, or you believe there is a better or more up-
to-date source for the page, or you have corrections or
improvements to the information in this COLOPHON (which is not
part of the original manual page), send a mail to
[email protected]
Linux man-pages 6.15 2025-05-17PR_SET_TAGGED_ADDR_CTRL(2const)
Pages that refer to this page: prctl(2), PR_GET_TAGGED_ADDR_CTRL(2const), PR_SET_TAGGED_ADDR_CTRL(2const)