Re: [PATCHv2] x86/mm: set x32 syscall bit in SET_PERSONALITY()

From: Dmitry Safonov
Date: Tue Mar 21 2017 - 16:58:55 EST


On 03/21/2017 09:40 PM, Cyrill Gorcunov wrote:
On Tue, Mar 21, 2017 at 09:09:40PM +0300, Dmitry Safonov wrote:

I guess the question comes from that we're releasing CRIU 3.0 with
32-bit C/R and some other cool stuff, but we don't support x32 yet.
As we don't want release a thing that we aren't properly testing.
So for a while we should error on dumping x32 applications.

yes

I think, the best way for now is to check physicall address of vdso
from /proc/.../pagemap. If it's CONFIG_VDSO=n kernel, I guess we could
also add check for %ds from ptrace's register set. For x32 it's set to
__USER_DS, while for native it's 0 (looking at start_thread() and
compat_start_thread()). The application can simply change it without
any consequence - so it's not very reliable, we could only warn at
catching it, not rely on this.

indeed, thanks!

Also, even more simple-minded: for now we could just check binary magic
from /proc/.../exe, for now stopping on x32 binaries.

--
Dmitry