lkml.org 
[lkml]   [2007]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6/7] Freezer: Fix PF_NOFREEZE vs freezeable race
    Date
    From: Gautham R Shenoy <ego@in.ibm.com>

    This patch fixes the race pointed out by Oleg Nesterov.

    * Freezer marks a thread as freezeable.
    * The thread now marks itself PF_NOFREEZE, but it will be frozen on
      on calling try_to_freeze(). Thus the task is frozen, even though it doesn't
      want to.
    * Subsequent thaw_processes() will also fail to thaw the task since it is
      marked PF_NOFREEZE.

    Avoid this problem by checking the task's PF_NOFREEZE status in
    frozen_processes() before marking the task as frozen.

    Signed-off-by: Gautham R Shenoy <ego@in.ibm.com>
    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
    ---
    include/linux/freezer.h | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    Index: linux-2.6/include/linux/freezer.h
    ===================================================================
    --- linux-2.6.orig/include/linux/freezer.h 2007-05-10 21:44:36.000000000 +0200
    +++ linux-2.6/include/linux/freezer.h 2007-05-10 21:44:47.000000000 +0200
    @@ -63,8 +63,10 @@ static inline int thaw_process(struct ta
    */
    static inline void frozen_process(struct task_struct *p)
    {
    - p->flags |= PF_FROZEN;
    - wmb();
    + if (!unlikely(p->flags & PF_NOFREEZE)) {
    + p->flags |= PF_FROZEN;
    + wmb();
    + }
    clear_tsk_thread_flag(p, TIF_FREEZE);
    }

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-05-11 11:11    [W:0.021 / U:94.268 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site