Re: [PATCH -tip] x86: acpi/sleep.c saved_magic fix overflow

Jaswinder Singh Rajput
2009-04-10T19:17:24Z

On Fri, 2009-04-10 at 21:13 +0200, Sam Ravnborg wrote:
> On Fri, Apr 10, 2009 at 07:55:45PM +0200, Pavel Machek wrote:
> > On Fri 2009-04-10 23:06:55, Jaswinder Singh Rajput wrote:
> > > Impact: fix overflow
> >
> > > Constant 0x123456789abcdef0 is so big for a long.
> > > So using saved_magic 0x12345678 for both 32 and 64 bit.
> >
> > Have you tested the patch? I have feeling that this is tested from
> > assembly... Plus it is only set to long constant on 64-bit, so I don't
> > think you are fixing anything. And if your code is correct the
> > variable is write only...
>
> $ git grep saved_magic
> kernel/acpi/sleep.c: saved_magic = 0x12345678;
> kernel/acpi/sleep.c: saved_magic = 0x123456789abcdef0;
> kernel/acpi/sleep.h:extern long saved_magic;
> kernel/acpi/wakeup_32.S: movl %cs:saved_magic, %eax
> kernel/acpi/wakeup_32.S:ENTRY(saved_magic) .long 0
> kernel/acpi/wakeup_64.S: movq saved_magic, %rax
> kernel/acpi/wakeup_64.S:ENTRY(saved_magic) .quad 0
>
>
> wakeup_32.S:
> movl %cs:saved_magic, %eax
> cmpl $0x12345678, %eax
>
> wakeup_64.S:
> movq saved_magic, %rax
> movq $0x123456789abcdef0, %rdx
>
> So patch is obviously bogus.
>

Sorry, I was confused by this sparse warning on 64 bit box:

CHECK arch/x86/kernel/acpi/sleep.c
arch/x86/kernel/acpi/sleep.c:107:16: warning: constant 0x123456789abcdef0 is so big it is long

atleast I found problem in sparse ;-)

--
JSR