[lkml]   [2003]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    SubjectRe: doublefault debugging (was Re: Linux v2.5.62 --- spontaneous reboots)

    On Thu, 20 Feb 2003, Linus Torvalds wrote:

    > > ie. something like:
    > Well, please remove the double test for task inequality.


    > I like the patch conceptually, HOWEVER, I'm not sure it's correct. The
    > thing is, moving the wait_task_inactive() to __put_task_struct() means
    > that we will be doing the "release_task()" teardown while the task is
    > still potentially active on another CPU.
    > In particular, we'll be freeing the security stuff and the signals while
    > the process may still be active in the scheduler on another CPU. This
    > can be dangerous, ie doing things like calling "free_uid()" on a process
    > that is still running means that suddenly you have issues like not being
    > able to trust "current->user" from interrupts. We may not care right
    > now, but it's still wrong (imagine us doing per-user time accounting -
    > which makes a _lot_ of sense).

    well, we can do the wait_task_inactive() in both cases - in
    release_task(), and in __put_task_struct(). [in the release_task() path
    that will just be a nop]. This further simplifies the patch.


    --- kernel/fork.c.orig
    +++ kernel/fork.c
    @@ -75,6 +75,7 @@
    void __put_task_struct(struct task_struct *tsk)
    if (tsk != current) {
    + wait_task_inactive(tsk);
    } else {
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:33    [W:0.023 / U:263.608 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site