jail extensions
Marko Zec
zec at icir.org
Fri Jun 9 14:16:35 UTC 2006
On Friday 09 June 2006 13:24, Julian Elischer wrote:
> Alex Lyashkov wrote:
> >>2) at MOD_LOAD case run loop for each prisons and init private data for
> >>this module at all contexts. At this way module always 'exist' at all
> >>contexts.
> >>and disable module compiling (loading) when module don`t marked jail
> >>safe.
> >
> >example for this way.
> >http://cvs.freevps.com/index.cgi/kernel/include/linux/freevps/s_context_xf
> >rm.h?rev=1.3
> > http://cvs.freevps.com/index.cgi/kernel/net/ipv4/ah4.c?rev=1.3
> >ah4_init/ah4_fini functions.
>
> this is the bit that is obvious.
>
> The hard bit is the non obvious difficulty of changing all existing
> modules in such away that
> they can be compiled both in the new way, and in a way that they are
> still compiled to the old way.
>
> You need to put all the currently global variables into a structure that
> can be instantiated
> for each jail, but in order to make this continue to work in the
> existing system, they still need to
> be compiled as a global when the normal buold is made.
>
> for this reason Marco and I were looking at various macros that can be
> defined to
> allow the variables to be compiled both ways.
>
> For example :
>
>
> int xx;
> static int yy;
> struct a {
> int aa;
> int bb;
> } cc;
>
> might become:
>
> VM_GLOBAL_START(modname)
> int xx;
> VMG_STATIC int yy;
> struct a {
> int aa;
> int bb;
> } cc;
> VM_GLOBAL_STOP(modname)
>
>
> You would access these as:
> VM_GLOBAL(modname, yy) = 2
> foobar( VM_GLOBAL_STRUCT(cc, modname)->bb);
One of the questions I have no answers to is what should we do with the
"static" modifier semantics in a virtualized world order. I.e. once th e
virtualized symbols are placed in a structure generated by whatever macros we
design, it will become difficult to efficiently discriminate between globally
and locally visible parts of that structure...
Marko
More information about the freebsd-arch
mailing list