On 01/12/2017 08:50 AM, Khalid Aziz wrote:
2. Any shared page that has ADI protection enabled on it, must stay ADI
protected across all processes sharing it.
Is that true?
What happens if a page with ADI tags set is accessed via a PTE without
the ADI enablement bit set?
COW creates an intersection of the two. It creates a new copy of the
shared data. It is a new data page and hence the process creating it
must be the one responsible for enabling ADI protection on it.
Do you mean that the application must be responsible? Or the kernel
running in the context of the new process must be responsible?
It is also a copy of what was ADI protected data, so should it
inherit the protection instead?
I think the COW'd copy must inherit the VMA bit, the PTE bits, and the
tags on the cachelines.
I misspoke earlier. I had misinterpreted the results of test I ran.
Changing the tag on shared memory is allowed by memory controller. The
requirement is every one sharing the page must switch to the new tag or
else they get SIGSEGV.
I asked this in the last mail, but I guess I'll ask it again. Please
answer this directly.
If we require that everyone coordinate their tags on the backing
physical memory, and we allow a lower-privileged program to access the
same data as a more-privileged one, then the lower-privilege app can
cause arbitrary crashes in the privileged application.
For instance, say sudo mmap()'s /etc/passwd and uses ADI tags to protect
the mapping. Couldn't any other app in the system prevent sudo from
working?
How can we *EVER* allow tags to be set on non-writable mappings?