xserver/hw
Jessica Clarke 30dc81f4f5 xwayland: Stop relying on event_id being a valid pointer
On traditional 32-bit and 64-bit architectures, uint64_t can be abused
to hold a uintptr_t and be cast back to a valid pointer. However, on
CHERI, and thus Arm's Morello prototype, pointers are capabilities,
which contain a traditional address alongside additional metadata,
including a tag bit that ensures it cannot be forged (the only way to
get a capability with the tag bit set is by using instructions that take
in another valid capability with sufficient bounds/permissions/etc for
the request, and any other operation, like overwriting individual bytes
in memory, will give a capability whose tag is clear). Casting a pointer
to a uintptr_t is fine as uintptr_t is represented as a capability, but
casting to a uint64_t yields just the address, losing the metadata and
tag. Thus, when cast back to a uintptr_t, the capability remains invalid
and faults on any attempt to dereference.

As with various other places in the tree, address this by searching for
the pointer in a list so that we no longer rely on this undefined
behaviour.

Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com>
(cherry picked from commit bfe8f54924)
2023-06-06 10:09:13 +02:00
..
vfb Don't install Xvfb 2023-02-17 10:13:34 +00:00
xwayland xwayland: Stop relying on event_id being a valid pointer 2023-06-06 10:09:13 +02:00
meson.build Drop Xephyr / kdrive DDX 2023-02-17 10:13:34 +00:00