Thread (50 messages) 50 messages, 6 authors, 2012-08-02

Re: [PATCH -alternative] mm: hugetlbfs: Close race during teardown of hugetlbfs shared page tables V2 (resend)

From: Mel Gorman <mgorman@suse.de>
Date: 2012-08-02 07:38:03
Also in: lkml

On Thu, Aug 02, 2012 at 09:19:34AM +0200, Michal Hocko wrote:
Hi Larry,

On Wed 01-08-12 11:06:33, Larry Woodman wrote:
quoted
On 08/01/2012 08:32 AM, Michal Hocko wrote:
quoted
I am really lame :/. The previous patch is wrong as well for goto out
branch. The updated patch as follows:
This patch worked fine Michal!  
Thanks for the good news!
quoted
You and Mel can duke it out over who's is best. :)
The answer is clear here ;) Mel did the hard work of identifying the
culprit so kudos go to him.
I'm happy once it's fixed!
I just tried to solve the issue more inside x86 arch code. The pmd
allocation outside of sharing code seemed strange to me for quite some
time I just underestimated its consequences completely.

Both approaches have some pros. Mel's patch is more resistant to other
not-yet-discovered races and it also makes the arch independent code
more robust because relying on the pmd trick is not ideal.
If there is another race then it is best to hear about it, understand
it and fix the underlying problem. More importantly, your patch ensures
that two processes faulting at the same time will share page tables with
each other. My patch only noted that this missed opportunity could cause
problems with fork.
On the other hand, mine is more coupled with the sharing code so it
makes the code easier to follow and also makes the sharing more
effective because racing processes see pmd populated when checking for
shareable mappings.
It could do with a small comment above huge_pmd_share() explaining that
calling pmd_alloc() under the i_mmap_mutex is necessary to prevent two
parallel faults missing a sharing opportunity with each other but it's
not mandatory.
So I am more inclined to mine but I don't want to push it because both
are good and make sense. What other people think?
I vote yours

Reviewed-by: Mel Gorman <mgorman@suse.de>

-- 
Mel Gorman
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help