[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120607210249.GI21339@redhat.com>
Date: Thu, 7 Jun 2012 23:02:49 +0200
From: Andrea Arcangeli <aarcange@...hat.com>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Josh Boyer <jwboyer@...il.com>,
Greg KH <gregkh@...uxfoundation.org>,
linux-kernel@...r.kernel.org, stable@...r.kernel.org,
akpm@...ux-foundation.org, alan@...rguk.ukuu.org.uk,
Ulrich Obergfell <uobergfe@...hat.com>,
Mel Gorman <mgorman@...e.de>, Hugh Dickins <hughd@...gle.com>,
Larry Woodman <lwoodman@...hat.com>,
Petr Matousek <pmatouse@...hat.com>,
Rik van Riel <riel@...hat.com>
Subject: Re: [ 08/82] mm: pmd_read_atomic: fix 32bit PAE pmd walk vs
pmd_populate SMP race condition
On Thu, Jun 07, 2012 at 09:04:14PM +0200, Andrea Arcangeli wrote:
> #ifndef CONFIG_TRANSPARENT_HUGEPAGE
> +#define pmd_read_atomic pmd_read_atomic
> static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
> {
> pmdval_t ret;
> @@ -74,11 +81,6 @@ static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
>
> return (pmd_t) { ret };
> }
> -#else /* CONFIG_TRANSPARENT_HUGEPAGE */
> -static inline pmd_t pmd_read_atomic(pmd_t *pmdp)
> -{
> - return (pmd_t) { atomic64_read((atomic64_t *)pmdp) };
> -}
> #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
>
> static inline void native_set_pte_atomic(pte_t *ptep, pte_t pte)
This actually wasn't safe because if the high part wasn't none and the
low part was none, the pmd_none check would fail. I sent an updated
version that will fix this hopefully for good and it turns out the
same pmd_read_atomic will work for THP=n/y without need of cmpxchg8b
even if it's slightly less obviously safe than if we used
atomic64_read for THP=y. Still safe that is...
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists