when should we lock a process?
Ian Smith
smithi at nimnet.asn.au
Mon Jan 2 12:56:44 UTC 2017
In freebsd-questions Digest, Vol 657, Issue 1, Message: 10
On Mon, 2 Jan 2017 17:23:15 +0800 (CST) sdf <jiejinmv at 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 at 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
More information about the freebsd-questions
mailing list