.. | .. |
---|
45 | 45 | |
---|
46 | 46 | 1. User addresses not accessed by the kernel but used for address space |
---|
47 | 47 | management (e.g. ``mprotect()``, ``madvise()``). The use of valid |
---|
48 | | - tagged pointers in this context is allowed with the exception of |
---|
49 | | - ``brk()``, ``mmap()`` and the ``new_address`` argument to |
---|
50 | | - ``mremap()`` as these have the potential to alias with existing |
---|
51 | | - user addresses. |
---|
| 48 | + tagged pointers in this context is allowed with these exceptions: |
---|
52 | 49 | |
---|
53 | | - NOTE: This behaviour changed in v5.6 and so some earlier kernels may |
---|
54 | | - incorrectly accept valid tagged pointers for the ``brk()``, |
---|
55 | | - ``mmap()`` and ``mremap()`` system calls. |
---|
| 50 | + - ``brk()``, ``mmap()`` and the ``new_address`` argument to |
---|
| 51 | + ``mremap()`` as these have the potential to alias with existing |
---|
| 52 | + user addresses. |
---|
| 53 | + |
---|
| 54 | + NOTE: This behaviour changed in v5.6 and so some earlier kernels may |
---|
| 55 | + incorrectly accept valid tagged pointers for the ``brk()``, |
---|
| 56 | + ``mmap()`` and ``mremap()`` system calls. |
---|
| 57 | + |
---|
| 58 | + - The ``range.start``, ``start`` and ``dst`` arguments to the |
---|
| 59 | + ``UFFDIO_*`` ``ioctl()``s used on a file descriptor obtained from |
---|
| 60 | + ``userfaultfd()``, as fault addresses subsequently obtained by reading |
---|
| 61 | + the file descriptor will be untagged, which may otherwise confuse |
---|
| 62 | + tag-unaware programs. |
---|
| 63 | + |
---|
| 64 | + NOTE: This behaviour changed in v5.14 and so some earlier kernels may |
---|
| 65 | + incorrectly accept valid tagged pointers for this system call. |
---|
56 | 66 | |
---|
57 | 67 | 2. User addresses accessed by the kernel (e.g. ``write()``). This ABI |
---|
58 | 68 | relaxation is disabled by default and the application thread needs to |
---|