There is ASan as well that can make use of the top bits but it requires recompilation (in principle, for MTE you just need the libc to return tagged pointers on malloc()). Of course, there can be ABI surprises and we came across some, see commit dcde237319e6 ("mm: Avoid creating virtual address aliases in brk()/mmap()/mremap()"). > Given that UAI is not efficiently context switched, the implementation > of uaccess is rather bizarre. With the implementation in this series > in particular, if the access_ok checks ever get out of sync with > actual user access, a user access could be emitted with the high bits > not masked despite the range check succeeding due to masking, which > would, unless great care is taken, result in a "user" access hitting > the kernel range. That's no good. Per my (mis)understanding of the x86 address space, I don't think it's that bad if you are careful with bit 56 always being 0 for user addresses. The user can't generate a valid kernel address that goes past access_ok(). -- Catalin