From 052b0cfadc1781c3da66b9ae964d207763aff777 Mon Sep 17 00:00:00 2001 From: Ben Dooks Date: Fri, 12 Dec 2008 00:24:36 +0000 Subject: [PATCH] --- yaml --- r: 137518 b: refs/heads/master c: 663a83048c602d5176c23489b4e29598d753e42b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/arm/plat-s3c/pm-check.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 3d8148c02e9a..dad0f9d051cb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 67c2addcb08df4827fbb7af88b57cce2ba71e34b +refs/heads/master: 663a83048c602d5176c23489b4e29598d753e42b diff --git a/trunk/arch/arm/plat-s3c/pm-check.c b/trunk/arch/arm/plat-s3c/pm-check.c index b221470e3bfc..183f1304bf58 100644 --- a/trunk/arch/arm/plat-s3c/pm-check.c +++ b/trunk/arch/arm/plat-s3c/pm-check.c @@ -152,7 +152,7 @@ static inline int in_region(void *ptr, int size, void *what, size_t whatsz) } /** - * s3c_pm_runcheck*() - helper to check a resource on restore. + * s3c_pm_runcheck() - helper to check a resource on restore. * @res: The resource to check * @vak: Pointer to list of CRC32 values to check. * @@ -166,9 +166,12 @@ static u32 *s3c_pm_runcheck(struct resource *res, u32 *val) void *save_at = phys_to_virt(s3c_sleep_save_phys); unsigned long addr; unsigned long left; + void *stkpage; void *ptr; u32 calc; + stkpage = (void *)((u32)&calc & ~PAGE_MASK); + for (addr = res->start; addr < res->end; addr += CHECK_CHUNKSIZE) { left = res->end - addr; @@ -178,6 +181,11 @@ static u32 *s3c_pm_runcheck(struct resource *res, u32 *val) ptr = phys_to_virt(addr); + if (in_region(ptr, left, stkpage, 4096)) { + S3C_PMDBG("skipping %08lx, has stack in\n", addr); + goto skip_check; + } + if (in_region(ptr, left, crcs, crc_size)) { S3C_PMDBG("skipping %08lx, has crc block in\n", addr); goto skip_check;