Messages in this thread | | | From | Michel Lespinasse <> | Subject | [PATCH 0/2] RFC: page munlock issues when breaking up COW | Date | Wed, 8 Dec 2010 23:49:37 -0800 |
| |
I'm sending this up as RFC only as I've only done minimal testing so far - I would actually be particularly interested in comments about any corner cases I must make sure to test for...
It looks like there is a race in the do_wp_page() code that munlocks the old page after breaking up COW. The pte still points to that old page, so I don't see that we are protected against vmscan mlocking back the page right away. This can be easily worked around by moving that code to the end of do_wp_page(), after the pte has been pointed to the new page.
Also, the corresponding code in __do_fault() seems entirely unnecessary, since there was never a pte pointing to the old page in our vma.
I found this by code inspection only, and while I believe I understand this code well by now, there is always the possibility that I may have missed something. I hope Nick can comment, since he wrote this part of the code.
Michel Lespinasse (2): mlock: fix race when munlocking pages in do_wp_page() mlock: do not munlock pages in __do_fault()
mm/memory.c | 32 ++++++++++++-------------------- 1 files changed, 12 insertions(+), 20 deletions(-)
-- 1.7.3.1
| |