arm64: mm: Add double logical invert to pte accessors
authorSteve Capper <steve.capper@linaro.org>
Tue, 25 Feb 2014 11:38:53 +0000 (11:38 +0000)
committerJiri Slaby <jslaby@suse.cz>
Mon, 24 Mar 2014 08:45:07 +0000 (09:45 +0100)
commit3eb3391260f086f2c79252d94c7ac777dac51bd5
tree21404c046aea458d56c10b3c7375f1c3d50b1564
parent7cbcb219e4113e10ce4b036118992abdbc4a8273
arm64: mm: Add double logical invert to pte accessors

commit 84fe6826c28f69d8708bd575faed7f75e6b6f57f upstream.

Page table entries on ARM64 are 64 bits, and some pte functions such as
pte_dirty return a bitwise-and of a flag with the pte value. If the
flag to be tested resides in the upper 32 bits of the pte, then we run
into the danger of the result being dropped if downcast.

For example:
gather_stats(page, md, pte_dirty(*pte), 1);
where pte_dirty(*pte) is downcast to an int.

This patch adds a double logical invert to all the pte_ accessors to
ensure predictable downcasting.

Signed-off-by: Steve Capper <steve.capper@linaro.org>
[steve.capper@linaro.org: rebased patch to leave pte_write alone to
allow for merge with 3.13 stable]
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
arch/arm64/include/asm/pgtable.h