lkml.org 
[lkml]   [2012]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/6] PM / Hibernate: Disable usermode helpers right before freezing tasks
    Date
    From: Rafael J. Wysocki <rjw@sisk.pl>

    There is no reason to call usermodehelper_disable() before creating
    memory bitmaps in hibernate() and software_resume(), so call it right
    before freeze_processes(), in accordance with the other suspend and
    hibernation code. Consequently, call usermodehelper_enable() right
    after the thawing of tasks rather than after freeing the memory
    bitmaps.

    Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
    ---
    kernel/power/hibernate.c | 23 ++++++++++-------------
    1 file changed, 10 insertions(+), 13 deletions(-)

    Index: linux/kernel/power/hibernate.c
    ===================================================================
    --- linux.orig/kernel/power/hibernate.c
    +++ linux/kernel/power/hibernate.c
    @@ -611,19 +611,19 @@ int hibernate(void)
    if (error)
    goto Exit;

    - error = usermodehelper_disable();
    - if (error)
    - goto Exit;
    -
    /* Allocate memory management structures */
    error = create_basic_memory_bitmaps();
    if (error)
    - goto Enable_umh;
    + goto Exit;

    printk(KERN_INFO "PM: Syncing filesystems ... ");
    sys_sync();
    printk("done.\n");

    + error = usermodehelper_disable();
    + if (error)
    + goto Exit;
    +
    error = freeze_processes();
    if (error)
    goto Free_bitmaps;
    @@ -660,9 +660,8 @@ int hibernate(void)
    freezer_test_done = false;

    Free_bitmaps:
    - free_basic_memory_bitmaps();
    - Enable_umh:
    usermodehelper_enable();
    + free_basic_memory_bitmaps();
    Exit:
    pm_notifier_call_chain(PM_POST_HIBERNATION);
    pm_restore_console();
    @@ -777,15 +776,13 @@ static int software_resume(void)
    if (error)
    goto close_finish;

    - error = usermodehelper_disable();
    + error = create_basic_memory_bitmaps();
    if (error)
    goto close_finish;

    - error = create_basic_memory_bitmaps();
    - if (error) {
    - usermodehelper_enable();
    + error = usermodehelper_disable();
    + if (error)
    goto close_finish;
    - }

    pr_debug("PM: Preparing processes for restore.\n");
    error = freeze_processes();
    @@ -805,8 +802,8 @@ static int software_resume(void)
    swsusp_free();
    thaw_processes();
    Done:
    - free_basic_memory_bitmaps();
    usermodehelper_enable();
    + free_basic_memory_bitmaps();
    Finish:
    pm_notifier_call_chain(PM_POST_RESTORE);
    pm_restore_console();


    \
     
     \ /
      Last update: 2012-03-26 00:05    [W:4.810 / U:0.376 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site