On 25/10/2021 11:59, Peter Zijlstra wrote:
On Thu, Oct 21, 2021 at 05:21:10AM -0700, Nadav Amit wrote:
quoted
From: Nadav Amit <redacted>
Add a check to prevent access_error() from returning mistakenly that
page-faults due to instruction fetch are not allowed. Intel SDM does not
indicate whether "instruction fetch" and "write" in the hardware error
code are mutual exclusive, so check both before returning whether the
access is allowed.
Dave, can we get that clarified? It seems a bit naf and leads to
confusing code IMO.
There is no such thing as an instruction fetch (a read) causing a
modification to the mapping. From this point of view, you'd never
expect to see them both set.
However, be aware that INSTR is only reported for NX || SMEP. Without
either, instruction vs data accesses are distinguished internally (can
be demonstrated with SMAP) but not visible in the pagefault error code.
~Andrew