From: Pavel Machek This is my fault from long time ago: copy_page can't be used for copying task struct, therefore we can't use it in swsusp. Signed-off-by: Andrew Morton --- 25-akpm/kernel/power/swsusp.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) diff -puN kernel/power/swsusp.c~mm-swsusp-copy_page-is-harmfull kernel/power/swsusp.c --- 25/kernel/power/swsusp.c~mm-swsusp-copy_page-is-harmfull 2004-08-04 20:37:36.057447776 -0700 +++ 25-akpm/kernel/power/swsusp.c 2004-08-04 20:37:36.061447168 -0700 @@ -581,12 +581,8 @@ static void copy_data_pages(void) struct page * page; page = pfn_to_page(zone_pfn + zone->zone_start_pfn); pbe->orig_address = (long) page_address(page); - /* Copy page is dangerous: it likes to mess with - preempt count on specific cpus. Wrong preempt - count is then copied, oops. - */ - copy_page((void *)pbe->address, - (void *)pbe->orig_address); + /* copy_page is no usable for copying task structs. */ + memcpy((void *)pbe->address, (void *)pbe->orig_address, PAGE_SIZE); pbe++; } } _