From: Herbert Xu <herbert@gondor.apana.org.au> It can be replaced by a simple memcpy. Signed-off-by: Andrew Morton <akpm@osdl.org> --- 25-akpm/kernel/power/pmdisk.c | 20 ++++---------------- 25-akpm/kernel/power/swsusp.c | 19 +++---------------- 2 files changed, 7 insertions(+), 32 deletions(-) diff -puN kernel/power/pmdisk.c~swsusp-remove-copy_pagedir kernel/power/pmdisk.c --- 25/kernel/power/pmdisk.c~swsusp-remove-copy_pagedir Fri Jun 11 14:41:14 2004 +++ 25-akpm/kernel/power/pmdisk.c Fri Jun 11 14:41:14 2004 @@ -732,19 +732,6 @@ int pmdisk_resume(void) /* More restore stuff */ -/* FIXME: Why not memcpy(to, from, 1<<pagedir_order*PAGE_SIZE)? */ -static void __init copy_pagedir(suspend_pagedir_t *to, suspend_pagedir_t *from) -{ - int i; - char *topointer=(char *)to, *frompointer=(char *)from; - - for(i=0; i < 1 << pagedir_order; i++) { - copy_page(topointer, frompointer); - topointer += PAGE_SIZE; - frompointer += PAGE_SIZE; - } -} - #define does_collide(addr) does_collide_order(pm_pagedir_nosave, addr, 0) /* @@ -792,7 +779,7 @@ static int __init relocate_pagedir(void) * We have to avoid recursion (not to overflow kernel stack), * and that's why code looks pretty cryptic */ - suspend_pagedir_t *new_pagedir, *old_pagedir = pm_pagedir_nosave; + suspend_pagedir_t *old_pagedir = pm_pagedir_nosave; void **eaten_memory = NULL; void **c = eaten_memory, *m, *f; int err; @@ -808,8 +795,9 @@ static int __init relocate_pagedir(void) while ((m = (void *) __get_free_pages(GFP_ATOMIC, pagedir_order))) { if (!does_collide_order(old_pagedir, (unsigned long)m, pagedir_order)) { - pm_pagedir_nosave = new_pagedir = m; - copy_pagedir(new_pagedir, old_pagedir); + pm_pagedir_nosave = + memcpy(m, old_pagedir, + PAGE_SIZE << pagedir_order); err = 0; break; } diff -puN kernel/power/swsusp.c~swsusp-remove-copy_pagedir kernel/power/swsusp.c --- 25/kernel/power/swsusp.c~swsusp-remove-copy_pagedir Fri Jun 11 14:41:14 2004 +++ 25-akpm/kernel/power/swsusp.c Fri Jun 11 14:41:14 2004 @@ -863,19 +863,6 @@ int software_suspend(void) /* More restore stuff */ -/* FIXME: Why not memcpy(to, from, 1<<pagedir_order*PAGE_SIZE)? */ -static void copy_pagedir(suspend_pagedir_t *to, suspend_pagedir_t *from) -{ - int i; - char *topointer=(char *)to, *frompointer=(char *)from; - - for(i=0; i < 1 << pagedir_order; i++) { - copy_page(topointer, frompointer); - topointer += PAGE_SIZE; - frompointer += PAGE_SIZE; - } -} - #define does_collide(addr) does_collide_order(pagedir_nosave, addr, 0) /* @@ -923,7 +910,7 @@ static int relocate_pagedir(void) * We have to avoid recursion (not to overflow kernel stack), * and that's why code looks pretty cryptic */ - suspend_pagedir_t *new_pagedir, *old_pagedir = pagedir_nosave; + suspend_pagedir_t *old_pagedir = pagedir_nosave; void **eaten_memory = NULL; void **c = eaten_memory, *m, *f; int ret = 0; @@ -948,8 +935,8 @@ static int relocate_pagedir(void) printk("out of memory\n"); ret = -ENOMEM; } else { - pagedir_nosave = new_pagedir = m; - copy_pagedir(new_pagedir, old_pagedir); + pagedir_nosave = + memcpy(m, old_pagedir, PAGE_SIZE << pagedir_order); } c = eaten_memory; _