Hi! > > > > We currently freeze processes for suspend-to-ram, too. I guess that > > > > disable_usermodehelper is probably better and that in_suspend() should > > > > only be used for sanity checks... go with disable_usermodehelper and > > > > sorry for the noise. > > > > > > Here's another possibility: Freeze the workqueue that > > > call_usermodehelper uses (remember that code I didn't push hard enough > > > to Andrew?), and let invocations of call_usermodehelper block in > > > TASK_UNINTERRUPTIBLE. In refrigerating processes, don't choke on > > > > There may be many devices in the system, and you are going to need > > quite a lot of RAM for all that... That's why they do not queue it > > during boot, IIRC. Disabling usermode helper seems right. > > Ok, what do you think about this one? > > =================================================================== > > swsusp: disable usermodehelper after generating memory snapshot and > before resuming devices, so when device fails to resume we > won't try to call hotplug - userspace stopped anyway. > > Signed-off-by: Dmitry Torokhov <dtor@xxxxxxx> > > > include/linux/kmod.h | 3 +++ > kernel/kmod.c | 14 +++++++++++++- > kernel/power/disk.c | 2 ++ > kernel/power/swsusp.c | 1 - > 4 files changed, 18 insertions(+), 2 deletions(-) > > Index: dtor/kernel/power/disk.c > =================================================================== > --- dtor.orig/kernel/power/disk.c > +++ dtor/kernel/power/disk.c > @@ -205,6 +205,8 @@ int pm_suspend_disk(void) > > if (in_suspend) { > pr_debug("PM: writing image.\n"); > + usermodehelper_disable(); > + device_resume(); > error = swsusp_write(); > if (!error) > power_down(pm_disk_mode); > Index: dtor/kernel/power/swsusp.c > =================================================================== > --- dtor.orig/kernel/power/swsusp.c > +++ dtor/kernel/power/swsusp.c > @@ -853,7 +853,6 @@ static int suspend_prepare_image(void) > int swsusp_write(void) > { > int error; > - device_resume(); > lock_swapdevices(); > error = write_suspend_image(); > /* This will unlock ignored swap devices since writing is Looks good, except... why move code around? Could you just call usermodehelper_disable from swsusp_write? Pavel -- People were complaining that M$ turns users into beta-testers... ...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!