Hi, I am trying to make a research prototype that compartmentalizes kernel modules. Part of my design involves embedding an ID number in a kernel address, which I extract when I need to check for proper pointer access. I've modified the module loader to place the module in an address that contains the ID. However, when the kernel invokes one of the kernel API functions the module implements (e.g., inet6_create), I'd also like any pointer input arguments to also have the ID embedded. Instead of doing a deep copy of objects to an address that I allocate, my thought is that I find a page aligned address that contains my ID, and have that address map to the same page as the input pointer uses. I then can use the new address as input to the API function. Is this possible, and if so, how? I have tried using __get_vm_area_caller() to get a free address in a location I want, and then map_kernel_range() to tie the input pointer page to the new address. This results in a segfault in mte_sync_tags() (called by vmap_pte_range()). I also tried __vmalloc_node_range() along with map_kernel_range(), but this triggers the warning on mm/vmalloc.c:211. Any insight is appreciated, thanks! I sent this email last week, and I apologize for the spam, but I didn't receive any feedback, and I fear it may have been lost in the flood of patches. -- Derrick McKee Phone: (703) 957-9362 Email: derrick.mckee@xxxxxxxxx