yes: if((ulong)name < KZERO){ validaddr((ulong)name, 1, 0); if(!dup) print("warning: validname called from %lux with user pointer", pc); p = name; t = BY2PG-((ulong)p&(BY2PG-1)); while((ename=vmemchr(p, 0, t)) == nil){ -> p += t; t = BY2PG; } }else when moving p to the start of the next page... it is not checked that this address is valid as vmemchr() assumes the start address to be already checked, and it will crash when vmemchr() touches it on the next round. vmemchr() will successive check pages if the pointer to pointer + len span page boundries anyway so the while is not really needed: name = aname; if((ulong)name < KZERO){ validaddr((ulong)name, 1, 0); if(!dup) print("warning: validname called from %lux with user pointer", pc); ename = vmemchr(name, 0, (1<<16)); }else -- cinap