create_region() mapped up to ENTRIES_PER_PGT pages through one final
level table, from whatever address the region started at. The text
region starts one page after the reserved area, so a region that
crossed the end of the table wrapped around and mapped its last pages
over the first entries of the same table. In a program with more than
about 2 MB of text, the reserved area became read-only and the kernel
faulted in umm_initialize().
Walk the region one final level table at a time.
Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com>