On Tue, 2009-02-03 at 01:41 +0100, Frederic Weisbecker wrote: > Right. BTW, I wonder how it behaves in case of suspend to disk. > But changing the state to TASK_INTERRUPTIBLE wouldn't change it in this case since the > signals are only sent to userpace threads to freeze them. > > Kernel threads try to freeze by themselves. > > But for such very long schedule_timeout, will the hibernation wait for kmemleak > to wake up and then try_to_freeze() before suspend to disk? I haven't added anything to kmemleak for this. Does something like below look feasible? --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -88,6 +88,7 @@ #include <linux/errno.h> #include <linux/uaccess.h> #include <linux/string.h> +#include <linux/freezer.h> #include <asm/sections.h> #include <asm/processor.h> @@ -1070,8 +1071,11 @@ static int kmemleak_scan_thread(void *arg) mutex_unlock(&scan_mutex); /* wait before the next scan */ - while (timeout && !kthread_should_stop()) + while (timeout && !kthread_should_stop()) { + if (try_to_freeze()) + break; timeout = schedule_timeout_interruptible(timeout); + } } pr_info("kmemleak: Automatic memory scanning thread ended\n"); Thanks. -- Catalin -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html