mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: john moser <bluefoxicy@linux.net>
To: linux-kernel@vger.kernel.org
Subject: initializing a task
Date: Tue, 13 Jan 2004 07:20:26 -0800 (PST)	[thread overview]
Message-ID: <20040113152026.34ADA3966@sitemail.everyone.net> (raw)

I'm having severe severe issues with my jail.  Inside do_fork() I have code for
forking with jails:

#ifdef CONFIG_LINUX_JAIL
                /*
                 * I want a NULL jail if there's no parent.
                 *
                 * Also, init seems to just get a jail for no apparent reason,
                 * and its parent seems to be 1.  init itself should never be
                 * jailed, so for a quick fix, anything having parent as 1 gets
                 * away without a jail.  PLEASE FIX THIS BAD HACK ASAP.
                 */
                p->pjail = NULL; /*has to be null or else we'll try to free up
                        the jail*/
                if (p->parent && p->parent->pid == 1 && p->parent->pjail) {
                        printk("pid: %l   parent pid: %l  parent jail: %08lx\n",p->pid,p->parent->pid,p->parent->pjail);
                        panic("Holy shit.  How did the init process get jailed?\n");
                }
                if (p->parent && p->parent->pid > 1)
                        linux_jail_attatch(p->parent->pjail, p);
#endif


Now, without the if() { panic(); } condition, init forks with a strange jail that
it magically gets from somewhere.  The STRANGE part is that it gets to printing
out "init 2.87 booting", but then dies on the next fork.

It seems that this random, uninitialized jail has FL_JAIL_MKNOD set (unitit'd data
is weird :/) and so init can't create /dev/inittab (so, I can't shut down).

I've tried a lot of bad hacks, from going into sched.c and setting current->pjail =
NULL before wake_up_forked_process(current) in sched_init, and just setting
current->pjail = null at the top of start_kernel() in init/main.c, but I can't
figure this out.  In theory, the following should replace the above block of code
from do_fork():

                p->pjail = NULL; /*has to be null or else we'll try to free up
                        the jail*/
                linux_jail_attatch(p->parent->pjail, p);

And work properly.  So, where's this magical task get created, and where can I
change it?  Any ideas?

_____________________________________________________________
Linux.Net -->Open Source to everyone
Powered by Linare Corporation
http://www.linare.com/

             reply	other threads:[~2004-01-13 15:20 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-01-13 15:20 john moser [this message]
2004-01-14  0:32 ` Chris Wright

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20040113152026.34ADA3966@sitemail.everyone.net \
    --to=bluefoxicy@linux.net \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®