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 Wed Jul 28 16:18:10 2004 +++ 25-akpm/kernel/power/swsusp.c Wed Jul 28 16:18:10 2004 @@ -614,12 +614,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++; } } _