Date: Tue, 6 Aug 2002 16:24:07 -0700 (PDT) From: Julian Elischer <julian@elischer.org> To: Robert Watson <rwatson@FreeBSD.org> Cc: julian@FreeBSD.org, jhb@FreeBSD.org, arch@FreeBSD.org Subject: Re: Problem with credential for initproc Message-ID: <Pine.BSF.4.21.0208061616330.65715-100000@InterJet.elischer.org> In-Reply-To: <Pine.NEB.3.96L.1020806151131.99671F-100000@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 6 Aug 2002, Robert Watson wrote:
>
>
> static void
> create_init(const void *udata __unused)
> {
> struct ucred *newcred, *oldcred;
> int error;
>
> error = fork1(&thread0, RFFDG | RFPROC | RFSTOPPED, &initproc);
> if (error)
> panic("cannot fork init: %d\n", error);
> /* divorce init's credentials from the kernel's */
> newcred = crget();
> PROC_LOCK(initproc);
> initproc->p_flag |= P_SYSTEM;
> oldcred = initproc->p_ucred;
> crcopy(newcred, oldcred);
> #ifdef MAC
> mac_create_proc1(newcred);
> #endif
> initproc->p_ucred = newcred;
> X
> X Something needs to happen here so that the thread cred is updated
> X
yes, since in normal processes the thread cred is updated on each kernel
entry, something extra needs to be done for
threads that never go to user space. It's possible that a simple
cred_update_thread(FIRST_THREAD_IN_PROC(td));
would be sufficient..
> PROC_UNLOCK(initproc);
> crfree(oldcred);
> mtx_lock_spin(&sched_lock);
> initproc->p_sflag |= PS_INMEM;
> mtx_unlock_spin(&sched_lock);
> cpu_set_fork_handler(FIRST_THREAD_IN_PROC(initproc), start_init, NULL);
> }
>
> I.e., somewhere around the X's, something needs to happen.
>
> This then breaks some events involving MAC in start_init(), since file
> systems get mounted using the wrong credential, resulting in NFS using the
> wrong credential, etc.
>
> Any suggestions, thoughts, patches? Do we think there might be a related
> problem involving spare threads elsewhere in the kernel, or is this the
> only situation where one proc (proc0) changes the credential of another
> proc (proc1) resulting in them getting out of sync?
>
> Robert N M Watson FreeBSD Core Team, TrustedBSD Projects
> robert@fledge.watson.org Network Associates Laboratories
>
>
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0208061616330.65715-100000>
