On 07.05.2012, at 12:37, Peter Maydell wrote: > On 7 May 2012 10:30, Alexander Graf <ag...@suse.de> wrote: >> @@ -587,6 +587,7 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int >> prot, >> page_dump(stdout); >> printf("\n"); >> #endif >> + tb_invalidate_phys_page_range(start, start + len, 0); >> mmap_unlock(); >> return start; > > The comment at the top of tb_invalidate_phys_page_range() says > "start and end must refer to the same physical page" -- is it > out of date or does that not apply to user-mode?
:( No, you're right. It only flushes the first page. > Do you need to also invalidate the range on munmap() and > mprotect-to-not-executable in order to correctly fault on > the case of: > map something > execute it > unmap it > try to execute it again > > ? (haven't tested that case but it seems like it might be an issue) I'm not sure. But it's an unrelated issue either way, right? :) Could you please try to quickly write a test case for this one while I fix the patch? Alex