On Oct 30, 2022, at 6:47 PM, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > The reason I haven't actually tested it is partly because I never > recreated the original problem Navav reported, and partly because the > meat of patch 4/4 is just the same "encode an extra flag bit in the > low bit of the page pointer" that I _did_ test, just doing the "remove > rmap" instead of "set dirty". > > In other words, I *think* this should make Nadav's test-case happy, > and avoid the warning he saw. I am sorry for not managing to make it reproducible on your system. The fact that you did not get the warning that I got means that it is not a hardware-TLB differences issue (at least not only that), but the race does not happen on your system (assuming you used ext4 on the BRD). Anyhow, I ran the tests with the patches and there are no failures. Thanks for addressing this issue. I understand from the code that you decided to drop the deferring of set_page_dirty(), which could - at least for the munmap case (where mmap_lock is taken for write) - prevent the need for “force_flush” and potentially save TLB flushes. I was just wondering whether the reason for that is that you wanted to have small backportable and conservative patches, or whether you changed your mind about it.