[PATCH]: Re: kern/122318 (CMake core dumping, chroot exiting)
Roman Divacky
rdivacky at FreeBSD.org
Sun Jul 27 09:22:12 UTC 2008
On Sun, Jul 27, 2008 at 11:03:10AM +0200, Roman Divacky wrote:
> On Sat, Jul 26, 2008 at 08:31:10AM +0200, Alexander Leidinger wrote:
> > Quoting "Sean C. Farley" <scf at FreeBSD.org> (Fri, 25 Jul 2008 15:36:52
> > -0500 (CDT)):
> >
> > > On Fri, 25 Jul 2008, Chagin Dmitry wrote:
> >
> > > > uname must work on all supported linuxulators
> > >
> > > I agree, and it does work until I start playing with the Linux version.
> >
> > Don't play with the linux version while linux programs are running.
> > Changing the version from 2.4.x to 2.6.x and vice versa while a program
> > is running is not supported at all and known to cause havoc. Roman, do
> > we have the possibility to make an easy check in the sysctl handler if
> > a linux program is still running and return an error from the handler?
> > Did I forgot something which makes it impossible to switch when a
> > program was run under 2.6 and stopped?
>
> I'll submit a patch that makes it impossible to switch the veresion when
> programs are running... it's not hard (elf{32}_brand_inuse() for every
> elf brand the linuxulator registered)
here it is:
Index: linux_mib.c
===================================================================
--- linux_mib.c (revision 180831)
+++ linux_mib.c (working copy)
@@ -251,8 +251,17 @@
{
struct prison *pr;
struct linux_prison *lpr;
+ Elf32_Brandinfo **brandinfo;
int use26;
+ for (brandinfo = &linux_brandlist[0]; *brandinfo != NULL;
+ ++brandinfo)
+ if (elf32_brand_inuse(*brandinfo)) {
+ printf("Cannot change osrelease while Linux binaries are running.\r\n");
+ return (EBUSY);
+ }
+
+
use26 = (strlen(osrelease) >= 3 && osrelease[2] == '6');
pr = linux_get_prison(td);
it's a copy'n'paste from i386/linux/linux_sysvec.c so I didnt bother to test it ;) but I
guess it works :)
roman
More information about the freebsd-emulation
mailing list