Problem Description:
In order to apply a particular protection key to an address
range, the kernel must update the corresponding page table entries.
The subroutine which handled this failed to take into account the
presence of 1GB largepage mappings created using the
shm_create_largepage(3) interface. In particular, it would always
treat a page directory page entry as pointing to another page table
page.
Impact:
The bug can be abused by an unprivileged user to cause
pmap_pkru_update_range() to treat userspace memory as a page table
page, and thus overwrite memory to which the application would
otherwise not have access.