common: use ptrace if yama blocked process_vm_readv/writev 280/head
authorJosh Stone <jistone@redhat.com>
Wed, 30 Nov 2016 02:27:29 +0000 (18:27 -0800)
committerJosh Stone <jistone@redhat.com>
Wed, 30 Nov 2016 02:27:29 +0000 (18:27 -0800)
commitf86e3c2ea2e9c8a11a13b42b2b60438c53e597b5
treed5ebf106a3e38df6824de2f3afe98f5b99f98625
parentd2f0f1051e5caf605471fa19532334fcce9bb508
common: use ptrace if yama blocked process_vm_readv/writev

Having sysctl kernel.yama.ptrace_scope=1, one may only call ptrace
attach on direct descendants.  The same restriction is also checked for
`process_vm_readv`/`writev` and certain procfs files.  However, if an
intermediate parent process already exited, we could end up with a
grandchild that we're still ptracing but isn't our descendant, so we
can't use the `process_vm` functions anymore -> `EPERM`.

We already had a fallback here for `EFAULT`, to just use `ptrace` memory
access, so use the same fallback after `EPERM` too.

Fixes #274.
common/src/linuxKludges.C