linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] hugetlb: detect race if fail to COW
@ 2011-11-18 14:04 Hillf Danton
  2011-11-18 14:16 ` John Kacur
  2011-11-18 15:07 ` Michal Hocko
  0 siblings, 2 replies; 12+ messages in thread
From: Hillf Danton @ 2011-11-18 14:04 UTC (permalink / raw)
  To: Andrea Arcangeli
  Cc: Andrew Morton, Michal Hocko, Johannes Weiner, linux-mm, LKML

In the error path that we fail to allocate new huge page, before try again, we
have to check race since page_table_lock is re-acquired.

If racing, our job is done.

Signed-off-by: Hillf Danton <dhillf@gmail.com>
---

--- a/mm/hugetlb.c	Fri Nov 18 21:38:30 2011
+++ b/mm/hugetlb.c	Fri Nov 18 21:48:15 2011
@@ -2407,7 +2407,14 @@ retry_avoidcopy:
 				BUG_ON(page_count(old_page) != 1);
 				BUG_ON(huge_pte_none(pte));
 				spin_lock(&mm->page_table_lock);
-				goto retry_avoidcopy;
+				ptep = huge_pte_offset(mm, address & huge_page_mask(h));
+				if (likely(pte_same(huge_ptep_get(ptep), pte)))
+					goto retry_avoidcopy;
+				/*
+				 * race occurs while re-acquiring page_table_lock, and
+				 * our job is done.
+				 */
+				return 0;
 			}
 			WARN_ON_ONCE(1);
 		}

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] hugetlb: detect race if fail to COW
  2011-11-18 14:04 [PATCH] hugetlb: detect race if fail to COW Hillf Danton
@ 2011-11-18 14:16 ` John Kacur
  2011-11-18 14:21   ` John Kacur
  2011-11-18 15:07 ` Michal Hocko
  1 sibling, 1 reply; 12+ messages in thread
From: John Kacur @ 2011-11-18 14:16 UTC (permalink / raw)
  To: Hillf Danton
  Cc: Andrea Arcangeli, Andrew Morton, Michal Hocko, Johannes Weiner,
	linux-mm, LKML

On Fri, Nov 18, 2011 at 3:04 PM, Hillf Danton <dhillf@gmail.com> wrote:
> In the error path that we fail to allocate new huge page, before try again, we
> have to check race since page_table_lock is re-acquired.
>
> If racing, our job is done.
>
> Signed-off-by: Hillf Danton <dhillf@gmail.com>
> ---
>
> --- a/mm/hugetlb.c      Fri Nov 18 21:38:30 2011
> +++ b/mm/hugetlb.c      Fri Nov 18 21:48:15 2011
> @@ -2407,7 +2407,14 @@ retry_avoidcopy:
>                                BUG_ON(page_count(old_page) != 1);
>                                BUG_ON(huge_pte_none(pte));
>                                spin_lock(&mm->page_table_lock);
> -                               goto retry_avoidcopy;
> +                               ptep = huge_pte_offset(mm, address & huge_page_mask(h));
> +                               if (likely(pte_same(huge_ptep_get(ptep), pte)))
> +                                       goto retry_avoidcopy;
> +                               /*
> +                                * race occurs while re-acquiring page_table_lock, and
> +                                * our job is done.
> +                                */
> +                               return 0;
>                        }
>                        WARN_ON_ONCE(1);
>                }


I'm not sure about the veracity of the race condition, but you better
do spin_unlock before you return.

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] hugetlb: detect race if fail to COW
  2011-11-18 14:16 ` John Kacur
@ 2011-11-18 14:21   ` John Kacur
  2011-11-18 14:46     ` Hillf Danton
  0 siblings, 1 reply; 12+ messages in thread
From: John Kacur @ 2011-11-18 14:21 UTC (permalink / raw)
  To: Hillf Danton
  Cc: Andrea Arcangeli, Andrew Morton, Michal Hocko, Johannes Weiner,
	linux-mm, LKML

On Fri, Nov 18, 2011 at 3:16 PM, John Kacur <jkacur@redhat.com> wrote:
> On Fri, Nov 18, 2011 at 3:04 PM, Hillf Danton <dhillf@gmail.com> wrote:
>> In the error path that we fail to allocate new huge page, before try again, we
>> have to check race since page_table_lock is re-acquired.
>>
>> If racing, our job is done.
>>
>> Signed-off-by: Hillf Danton <dhillf@gmail.com>
>> ---
>>
>> --- a/mm/hugetlb.c      Fri Nov 18 21:38:30 2011
>> +++ b/mm/hugetlb.c      Fri Nov 18 21:48:15 2011
>> @@ -2407,7 +2407,14 @@ retry_avoidcopy:
>>                                BUG_ON(page_count(old_page) != 1);
>>                                BUG_ON(huge_pte_none(pte));
>>                                spin_lock(&mm->page_table_lock);
>> -                               goto retry_avoidcopy;
>> +                               ptep = huge_pte_offset(mm, address & huge_page_mask(h));
>> +                               if (likely(pte_same(huge_ptep_get(ptep), pte)))
>> +                                       goto retry_avoidcopy;
>> +                               /*
>> +                                * race occurs while re-acquiring page_table_lock, and
>> +                                * our job is done.
>> +                                */
>> +                               return 0;
>>                        }
>>                        WARN_ON_ONCE(1);
>>                }
>
>
> I'm not sure about the veracity of the race condition, but you better
> do spin_unlock before you return.
>

Ugh, sorry for the noise, I see that's not how it works here.

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] hugetlb: detect race if fail to COW
  2011-11-18 14:21   ` John Kacur
@ 2011-11-18 14:46     ` Hillf Danton
  0 siblings, 0 replies; 12+ messages in thread
From: Hillf Danton @ 2011-11-18 14:46 UTC (permalink / raw)
  To: John Kacur
  Cc: Andrea Arcangeli, Andrew Morton, Michal Hocko, Johannes Weiner,
	linux-mm, LKML

On Fri, Nov 18, 2011 at 10:21 PM, John Kacur <jkacur@redhat.com> wrote:
> On Fri, Nov 18, 2011 at 3:16 PM, John Kacur <jkacur@redhat.com> wrote:
>> On Fri, Nov 18, 2011 at 3:04 PM, Hillf Danton <dhillf@gmail.com> wrote:
>>> In the error path that we fail to allocate new huge page, before try again, we
>>> have to check race since page_table_lock is re-acquired.
>>>
>>> If racing, our job is done.
>>>
>>> Signed-off-by: Hillf Danton <dhillf@gmail.com>
>>> ---
>>>
>>> --- a/mm/hugetlb.c      Fri Nov 18 21:38:30 2011
>>> +++ b/mm/hugetlb.c      Fri Nov 18 21:48:15 2011
>>> @@ -2407,7 +2407,14 @@ retry_avoidcopy:
>>>                                BUG_ON(page_count(old_page) != 1);
>>>                                BUG_ON(huge_pte_none(pte));
>>>                                spin_lock(&mm->page_table_lock);
>>> -                               goto retry_avoidcopy;
>>> +                               ptep = huge_pte_offset(mm, address & huge_page_mask(h));
>>> +                               if (likely(pte_same(huge_ptep_get(ptep), pte)))
>>> +                                       goto retry_avoidcopy;
>>> +                               /*
>>> +                                * race occurs while re-acquiring page_table_lock, and
>>> +                                * our job is done.
>>> +                                */
>>> +                               return 0;
>>>                        }
>>>                        WARN_ON_ONCE(1);
>>>                }
>>
>>
>> I'm not sure about the veracity of the race condition, but you better
>> do spin_unlock before you return.
>>
>
> Ugh, sorry for the noise, I see that's not how it works here.

Welcome:)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] hugetlb: detect race if fail to COW
  2011-11-18 14:04 [PATCH] hugetlb: detect race if fail to COW Hillf Danton
  2011-11-18 14:16 ` John Kacur
@ 2011-11-18 15:07 ` Michal Hocko
  2011-11-18 15:23   ` Hillf Danton
  1 sibling, 1 reply; 12+ messages in thread
From: Michal Hocko @ 2011-11-18 15:07 UTC (permalink / raw)
  To: Hillf Danton
  Cc: Andrea Arcangeli, Andrew Morton, Johannes Weiner, linux-mm, LKML

On Fri 18-11-11 22:04:37, Hillf Danton wrote:
> In the error path that we fail to allocate new huge page, before try again, we
> have to check race since page_table_lock is re-acquired.

I do not think we can race here because we are serialized by
hugetlb_instantiation_mutex AFAIU. Without this lock, however, we could
fall into avoidcopy and shortcut despite the fact that other thread has
already did the job.

The mutex usage is not obvious in hugetlb_cow so maybe we want to be
explicit about it (either a comment or do the recheck).

> 
> If racing, our job is done.
> 
> Signed-off-by: Hillf Danton <dhillf@gmail.com>
> ---
> 
> --- a/mm/hugetlb.c	Fri Nov 18 21:38:30 2011
> +++ b/mm/hugetlb.c	Fri Nov 18 21:48:15 2011
> @@ -2407,7 +2407,14 @@ retry_avoidcopy:
>  				BUG_ON(page_count(old_page) != 1);
>  				BUG_ON(huge_pte_none(pte));
>  				spin_lock(&mm->page_table_lock);
> -				goto retry_avoidcopy;
> +				ptep = huge_pte_offset(mm, address & huge_page_mask(h));
> +				if (likely(pte_same(huge_ptep_get(ptep), pte)))
> +					goto retry_avoidcopy;
> +				/*
> +				 * race occurs while re-acquiring page_table_lock, and
> +				 * our job is done.
> +				 */
> +				return 0;
>  			}
>  			WARN_ON_ONCE(1);
>  		}
> 
> --
> 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/ .
> Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

-- 
Michal Hocko
SUSE Labs
SUSE LINUX s.r.o.
Lihovarska 1060/12
190 00 Praha 9    
Czech Republic

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] hugetlb: detect race if fail to COW
  2011-11-18 15:07 ` Michal Hocko
@ 2011-11-18 15:23   ` Hillf Danton
  2011-11-18 16:11     ` Michal Hocko
  0 siblings, 1 reply; 12+ messages in thread
From: Hillf Danton @ 2011-11-18 15:23 UTC (permalink / raw)
  To: Michal Hocko
  Cc: Andrea Arcangeli, Andrew Morton, Johannes Weiner, linux-mm, LKML

On Fri, Nov 18, 2011 at 11:07 PM, Michal Hocko <mhocko@suse.cz> wrote:
> On Fri 18-11-11 22:04:37, Hillf Danton wrote:
>> In the error path that we fail to allocate new huge page, before try again, we
>> have to check race since page_table_lock is re-acquired.
>
> I do not think we can race here because we are serialized by
> hugetlb_instantiation_mutex AFAIU. Without this lock, however, we could
> fall into avoidcopy and shortcut despite the fact that other thread has
> already did the job.
>
> The mutex usage is not obvious in hugetlb_cow so maybe we want to be
> explicit about it (either a comment or do the recheck).
>

Then the following check is unnecessary, no?

Thanks,
Hillf

	/*
	 * Retake the page_table_lock to check for racing updates
	 * before the page tables are altered
	 */
	spin_lock(&mm->page_table_lock);
	ptep = huge_pte_offset(mm, address & huge_page_mask(h));
	if (likely(pte_same(huge_ptep_get(ptep), pte))) {
		/* Break COW */

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] hugetlb: detect race if fail to COW
  2011-11-18 15:23   ` Hillf Danton
@ 2011-11-18 16:11     ` Michal Hocko
  2011-11-18 19:39       ` Andrew Morton
  2011-11-21 12:23       ` Michal Hocko
  0 siblings, 2 replies; 12+ messages in thread
From: Michal Hocko @ 2011-11-18 16:11 UTC (permalink / raw)
  To: Hillf Danton
  Cc: Andrea Arcangeli, Andrew Morton, Johannes Weiner, linux-mm, LKML

On Fri 18-11-11 23:23:12, Hillf Danton wrote:
> On Fri, Nov 18, 2011 at 11:07 PM, Michal Hocko <mhocko@suse.cz> wrote:
> > On Fri 18-11-11 22:04:37, Hillf Danton wrote:
> >> In the error path that we fail to allocate new huge page, before try again, we
> >> have to check race since page_table_lock is re-acquired.
> >
> > I do not think we can race here because we are serialized by
> > hugetlb_instantiation_mutex AFAIU. Without this lock, however, we could
> > fall into avoidcopy and shortcut despite the fact that other thread has
> > already did the job.
> >
> > The mutex usage is not obvious in hugetlb_cow so maybe we want to be
> > explicit about it (either a comment or do the recheck).
> >
> 
> Then the following check is unnecessary, no?

Hmm, thinking about it some more, I guess we have to recheck because we
can still race with page migration. So we need you patch.

Reviewed-by: Michal Hocko <mhocko@suse.cz>

> 
> Thanks,
> Hillf
> 
> 	/*
> 	 * Retake the page_table_lock to check for racing updates
> 	 * before the page tables are altered
> 	 */
> 	spin_lock(&mm->page_table_lock);
> 	ptep = huge_pte_offset(mm, address & huge_page_mask(h));
> 	if (likely(pte_same(huge_ptep_get(ptep), pte))) {
> 		/* Break COW */
> 
> --
> 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/ .
> Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
> Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

-- 
Michal Hocko
SUSE Labs
SUSE LINUX s.r.o.
Lihovarska 1060/12
190 00 Praha 9    
Czech Republic

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] hugetlb: detect race if fail to COW
  2011-11-18 16:11     ` Michal Hocko
@ 2011-11-18 19:39       ` Andrew Morton
  2011-11-19  3:26         ` Hillf Danton
  2011-11-21 12:23       ` Michal Hocko
  1 sibling, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2011-11-18 19:39 UTC (permalink / raw)
  To: Michal Hocko
  Cc: Hillf Danton, Andrea Arcangeli, Johannes Weiner, linux-mm, LKML

On Fri, 18 Nov 2011 17:11:28 +0100
Michal Hocko <mhocko@suse.cz> wrote:

> On Fri 18-11-11 23:23:12, Hillf Danton wrote:
> > On Fri, Nov 18, 2011 at 11:07 PM, Michal Hocko <mhocko@suse.cz> wrote:
> > > On Fri 18-11-11 22:04:37, Hillf Danton wrote:
> > >> In the error path that we fail to allocate new huge page, before try again, we
> > >> have to check race since page_table_lock is re-acquired.
> > >
> > > I do not think we can race here because we are serialized by
> > > hugetlb_instantiation_mutex AFAIU. Without this lock, however, we could
> > > fall into avoidcopy and shortcut despite the fact that other thread has
> > > already did the job.
> > >
> > > The mutex usage is not obvious in hugetlb_cow so maybe we want to be
> > > explicit about it (either a comment or do the recheck).
> > >
> > 
> > Then the following check is unnecessary, no?
> 
> Hmm, thinking about it some more, I guess we have to recheck because we
> can still race with page migration. So we need you patch.
> 
> Reviewed-by: Michal Hocko <mhocko@suse.cz>

So we need a new changelog.  How does this look?


From: Hillf Danton <dhillf@gmail.com>
Subject: hugetlb: detect race upon page allocation failure during COW

In the error path where we failed to allocate a new huge page, we should
check whether a racing thread has added this page for us while this thread
waited for the page_table_lock.

We are serialized by hugetlb_instantiation_mutex on the pagefault patch
but this race can occur when another thread is performing page migration.

Signed-off-by: Hillf Danton <dhillf@gmail.com>
Reviewed-by: Michal Hocko <mhocko@suse.cz>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Johannes Weiner <jweiner@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 mm/hugetlb.c |    9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff -puN mm/hugetlb.c~hugetlb-detect-race-upon-page-allocation-failure-during-cow mm/hugetlb.c
--- a/mm/hugetlb.c~hugetlb-detect-race-upon-page-allocation-failure-during-cow
+++ a/mm/hugetlb.c
@@ -2407,7 +2407,14 @@ retry_avoidcopy:
 				BUG_ON(page_count(old_page) != 1);
 				BUG_ON(huge_pte_none(pte));
 				spin_lock(&mm->page_table_lock);
-				goto retry_avoidcopy;
+				ptep = huge_pte_offset(mm, address & huge_page_mask(h));
+				if (likely(pte_same(huge_ptep_get(ptep), pte)))
+					goto retry_avoidcopy;
+				/*
+				 * race occurs while re-acquiring page_table_lock, and
+				 * our job is done.
+				 */
+				return 0;
 			}
 			WARN_ON_ONCE(1);
 		}
_

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] hugetlb: detect race if fail to COW
  2011-11-18 19:39       ` Andrew Morton
@ 2011-11-19  3:26         ` Hillf Danton
  0 siblings, 0 replies; 12+ messages in thread
From: Hillf Danton @ 2011-11-19  3:26 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Michal Hocko, Andrea Arcangeli, Johannes Weiner, linux-mm, LKML

On Sat, Nov 19, 2011 at 3:39 AM, Andrew Morton
<akpm@linux-foundation.org> wrote:
> On Fri, 18 Nov 2011 17:11:28 +0100
> Michal Hocko <mhocko@suse.cz> wrote:
>
>> On Fri 18-11-11 23:23:12, Hillf Danton wrote:
>> > On Fri, Nov 18, 2011 at 11:07 PM, Michal Hocko <mhocko@suse.cz> wrote:
>> > > On Fri 18-11-11 22:04:37, Hillf Danton wrote:
>> > >> In the error path that we fail to allocate new huge page, before try again, we
>> > >> have to check race since page_table_lock is re-acquired.
>> > >
>> > > I do not think we can race here because we are serialized by
>> > > hugetlb_instantiation_mutex AFAIU. Without this lock, however, we could
>> > > fall into avoidcopy and shortcut despite the fact that other thread has
>> > > already did the job.
>> > >
>> > > The mutex usage is not obvious in hugetlb_cow so maybe we want to be
>> > > explicit about it (either a comment or do the recheck).
>> > >
>> >
>> > Then the following check is unnecessary, no?
>>
>> Hmm, thinking about it some more, I guess we have to recheck because we
>> can still race with page migration. So we need you patch.
>>
>> Reviewed-by: Michal Hocko <mhocko@suse.cz>
>
> So we need a new changelog.  How does this look?
>
Thanks Andrew and Michal:)

Best regards
Hillf

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] hugetlb: detect race if fail to COW
  2011-11-18 16:11     ` Michal Hocko
  2011-11-18 19:39       ` Andrew Morton
@ 2011-11-21 12:23       ` Michal Hocko
  2011-11-21 14:16         ` Michal Hocko
  1 sibling, 1 reply; 12+ messages in thread
From: Michal Hocko @ 2011-11-21 12:23 UTC (permalink / raw)
  To: Hillf Danton
  Cc: Andrea Arcangeli, Andrew Morton, Johannes Weiner, linux-mm, LKML

On Fri 18-11-11 17:11:28, Michal Hocko wrote:
> On Fri 18-11-11 23:23:12, Hillf Danton wrote:
> > On Fri, Nov 18, 2011 at 11:07 PM, Michal Hocko <mhocko@suse.cz> wrote:
> > > On Fri 18-11-11 22:04:37, Hillf Danton wrote:
> > >> In the error path that we fail to allocate new huge page, before try again, we
> > >> have to check race since page_table_lock is re-acquired.
> > >
> > > I do not think we can race here because we are serialized by
> > > hugetlb_instantiation_mutex AFAIU. Without this lock, however, we could
> > > fall into avoidcopy and shortcut despite the fact that other thread has
> > > already did the job.
> > >
> > > The mutex usage is not obvious in hugetlb_cow so maybe we want to be
> > > explicit about it (either a comment or do the recheck).
> > >
> > 
> > Then the following check is unnecessary, no?
> 
> Hmm, thinking about it some more, I guess we have to recheck because we
> can still race with page migration. So we need you patch.

OK, so looked at it again and we cannot race with page migration because
the page is locked (by unmap_and_move_*page) migration and we have the
old page locked here as well (hugetlb_fault).

Or am I missing something?

-- 
Michal Hocko
SUSE Labs
SUSE LINUX s.r.o.
Lihovarska 1060/12
190 00 Praha 9    
Czech Republic

--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] hugetlb: detect race if fail to COW
  2011-11-21 12:23       ` Michal Hocko
@ 2011-11-21 14:16         ` Michal Hocko
  2011-11-21 14:46           ` [PATCH] hugetlb: clarify hugetlb_instantiation_mutex usage Michal Hocko
  0 siblings, 1 reply; 12+ messages in thread
From: Michal Hocko @ 2011-11-21 14:16 UTC (permalink / raw)
  To: Hillf Danton
  Cc: Andrea Arcangeli, Andrew Morton, Johannes Weiner, linux-mm, LKML

On Mon 21-11-11 13:23:03, Michal Hocko wrote:
> On Fri 18-11-11 17:11:28, Michal Hocko wrote:
> > On Fri 18-11-11 23:23:12, Hillf Danton wrote:
> > > On Fri, Nov 18, 2011 at 11:07 PM, Michal Hocko <mhocko@suse.cz> wrote:
> > > > On Fri 18-11-11 22:04:37, Hillf Danton wrote:
> > > >> In the error path that we fail to allocate new huge page, before try again, we
> > > >> have to check race since page_table_lock is re-acquired.
> > > >
> > > > I do not think we can race here because we are serialized by
> > > > hugetlb_instantiation_mutex AFAIU. Without this lock, however, we could
> > > > fall into avoidcopy and shortcut despite the fact that other thread has
> > > > already did the job.
> > > >
> > > > The mutex usage is not obvious in hugetlb_cow so maybe we want to be
> > > > explicit about it (either a comment or do the recheck).
> > > >
> > > 
> > > Then the following check is unnecessary, no?
> > 
> > Hmm, thinking about it some more, I guess we have to recheck because we
> > can still race with page migration. So we need you patch.
> 
> OK, so looked at it again and we cannot race with page migration because
> the page is locked (by unmap_and_move_*page) migration and we have the
> old page locked here as well (hugetlb_fault).
> 
> Or am I missing something?

And the updated patch:
--- 

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH] hugetlb: clarify hugetlb_instantiation_mutex usage
  2011-11-21 14:16         ` Michal Hocko
@ 2011-11-21 14:46           ` Michal Hocko
  0 siblings, 0 replies; 12+ messages in thread
From: Michal Hocko @ 2011-11-21 14:46 UTC (permalink / raw)
  To: Hillf Danton
  Cc: Andrea Arcangeli, Andrew Morton, Johannes Weiner, linux-mm, LKML

And the follow up documentation patch:
---

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2011-11-21 14:46 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-11-18 14:04 [PATCH] hugetlb: detect race if fail to COW Hillf Danton
2011-11-18 14:16 ` John Kacur
2011-11-18 14:21   ` John Kacur
2011-11-18 14:46     ` Hillf Danton
2011-11-18 15:07 ` Michal Hocko
2011-11-18 15:23   ` Hillf Danton
2011-11-18 16:11     ` Michal Hocko
2011-11-18 19:39       ` Andrew Morton
2011-11-19  3:26         ` Hillf Danton
2011-11-21 12:23       ` Michal Hocko
2011-11-21 14:16         ` Michal Hocko
2011-11-21 14:46           ` [PATCH] hugetlb: clarify hugetlb_instantiation_mutex usage Michal Hocko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox