On 12/20/2024 10:37 AM, Corinna Vinschen wrote:
No worries. The expression
size_t commit_len = u_len - (start_addr - u_addr);
may be right, but it's not generally intelligible. If you'd like
to take a stab of changing the code to be more clear, I'm happy.
I'll give it a try.
By the way, the answer to my original question seems to be remarkably
easy. The question was whether we could allow mmap with MAP_FIXED to
succeed if the requested area is contained in an existing anonymous
mapping, even if the corresponding pages have not been unmapped first.
If I'm not mistaken, all that's required is to delete the following
lines starting at mmap.cc:497:
/* First check if the area is unused right now. */
for (SIZE_T l = 0; l < len; ++l)
if (MAP_ISSET (off + l))
{
set_errno (EINVAL);
return false;
}
That seems to work in preliminary testing, but I'll have to test it more
thoroughly before I'm sure.
If I convince myself that this works, is it OK with you if I commit it
(to main only) while you're on vacation? That way it can get wider
testing, and I can always revert it if it breaks something.
Ken