|
Message-ID: <20120728171348.GA4864@albatros> Date: Sat, 28 Jul 2012 21:13:48 +0400 From: Vasily Kulikov <segoon@...nwall.com> To: owl-dev@...ts.openwall.com Subject: Re: vzctl 3.3 && CPT Hi, On Thu, Jul 26, 2012 at 15:40 +0400, gremlin@...mlin.ru wrote: > On 26-Jul-2012 15:04:05 +0400, Vasily Kulikov wrote: > > 3) stay at vzctl 3.0.23. > > I'm going with (3) now as it doesn't limit our future wishes. > > Forwardporting bitness patch will be rather simple, I guess. > > I think the best solution is to stay at (3) while working on (2). So, I've successfully backported bitness_lock patch to our RHEL6-based kernel. The patched vzctl seems to work on both i686 and x86_64 kernels (tested on trivial lock.c sample which I've posted at LKML thread related to bitness_lock). However: 1) The kernel patch should not limit bitness_lock functionality even if we run 32-bit kernel (or 64-bit kernel without IA32_EMULATION support) because the information about the locked bitness must present in cases of CT migration. E.g. if we run 64-bit container on 64-bit system with CONFIG_IA32_EMULATION=y and a process inside of it locks itself with 64 bits, the lock must be still kept if we migrate it to a 64-bit system with CONFIG_IA32_EMULATION=n and then migrate it back. Also, one should be able to lock itself with 32 bits on 32-bit kernel and then be migrated to 64-bit system. The task must not be able to do 64-bit syscalls in this case. FWIW, I haven't tested CPT functionality with bitness_lock, I'm sure it is not ready for CPT yet. 2) My current vzctl patch is rather ugly. lock_on_exec locks a task only at the next execve(), but it disappears if execve(2) fails. IOW, execve("/no-such-binary")+execve("/bin/bash") doesn't lock the task. So, vzctl must re-set this flag before each call to execve(). vzctl uses deep calls from main() to actual execve(), so it is rather awkward to explicitly pass "bitness_lock" argument through so many functions (a structure with all params is not passed, unfortunately). For now, I just use a global variable to identify whether a prctl(2) should be called before execve(2). I'll try to think more about the way of passing this data (probably vzctl already uses such global variables for implicit argument passing?). Thanks, -- Vasily
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.