Messages in this thread | | | Date | Fri, 17 Oct 2014 06:23:13 +0200 | From | Juergen Gross <> | Subject | Re: [PATCH] xen: avoid race in p2m handling |
| |
On 10/16/2014 05:50 PM, David Vrabel wrote: > On 16/10/14 07:13, Juergen Gross wrote: >> When a new p2m leaf is allocated this leaf is linked into the p2m tree >> via cmpxchg. Unfortunately the compare value for checking the success >> of the update is read after checking for the need of a new leaf. It is >> possible that a new leaf has been linked into the tree concurrently >> in between. This could lead to a leaked memory page and to the loss of >> some p2m entries. >> >> Avoid the race by using the read compare value for checking the need >> of a new p2m leaf. > [...] >> @@ -579,11 +580,10 @@ static bool alloc_p2m(unsigned long pfn) >> } >> } >> >> - if (p2m_top[topidx][mididx] == p2m_identity || >> - p2m_top[topidx][mididx] == p2m_missing) { >> + p2m_orig = p2m_top[topidx][mididx]; > > Do you need to use ACCESS_ONCE() here?
Yes, you are probably right. Should I send a new patch or do you want to modify it?
Juergen
| |