Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Jan 2017 23:56:22 +1100 (EST)
From:      Ian Smith <smithi@nimnet.asn.au>
To:        sdf <jiejinmv@163.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: when should we lock a process?
Message-ID:  <20170102233228.Q26979@sola.nimnet.asn.au>
In-Reply-To: <mailman.105.1483358402.69123.freebsd-questions@freebsd.org>
References:  <mailman.105.1483358402.69123.freebsd-questions@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In freebsd-questions Digest, Vol 657, Issue 1, Message: 10
On Mon, 2 Jan 2017 17:23:15 +0800 (CST) sdf <jiejinmv@163.com> wrote:

 > Hi, friends. Can you see me?
 > I am new here and i am reading freebsd 11.0's  kernel code since these days.
 > I don't know the purpose of this line of code:
 > =================
 > PROC_LOCK(p);
 > ================
 > which is located at sys/kern/kern_exec.c  line:394 function:do_execve().
 > And let me paste its context here:
 >  387     /*
 >  388      * Lock the process and set the P_INEXEC flag to indicate that
 >  389      * it should be left alone until we're done here.  This is
 >  390      * necessary to avoid race conditions - e.g. in ptrace() -
 >  391      * that might allow a local user to illicitly obtain elevated
 >  392      * privileges.
 >  393      */
 >  394     PROC_LOCK(p);
 >  395     KASSERT((p->p_flag & P_INEXEC) == 0,
 >  396         ("%s(): process already has P_INEXEC flag", __func__));
 >  397     p->p_flag |= P_INEXEC;
 >  398     PROC_UNLOCK(p);
 > 
 > Could some one tell me when to lock a process? In another word, What 
 > are we doing when we are locking a process. I can trace out its 
 > definition but i want to know more.
 > ==================================
 > #define PROC_LOCK(p)    mtx_lock(&(p)->p_mtx)
 > ==================================
 > 
 > Thanks!
 > BTW:  Is this maillist for kernel questions? If my question is not 
 > suitable here, could you tell me which maillist is for kernel 
 > developers?

You will most likely find freebsd-hackers@freebsd.org a more suitable 
place for kernel (and other) code questions.

 https://lists.freebsd.org/mailman/listinfo/freebsd-hackers

You can review the archives there; you may need to subscribe to post.

 All public FreeBSD lists: https://lists.freebsd.org/mailman/listinfo

cheers, Ian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170102233228.Q26979>