lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sun, 12 Nov 2006 15:55:17 +0200
From:	Avi Kivity <avi@...ranet.com>
To:	Bernhard Rosenkraenzer <bero@...linux.org>
CC:	linux-kernel@...r.kernel.org, akpm@...l.org
Subject: Re: 2.6.19-rc5-mm1 fails to compile with gcc 4.2

Bernhard Rosenkraenzer wrote:
> On Sunday, 12. November 2006 14:43, Avi Kivity wrote:
>   
>> 'sel' is a variable, so gcc can't provide it as an immediate operand.
>> Specifying it as "rm" instead of "g" would have been better, but can't
>> have any real influence.
>>     
>
> Specifying it as "rm" instead of "g" does fix it -- patch attached.
>
>   
>> Well, for the code you posted in in the gcc bug, it probaby generated
>> something like
>>
>>     mov $0, %fs
>>
>> which is indeed invalid assembly.  But the kvm miscompile is something
>> else (running out of registers or something like that).
>>     
>
> What am I overlooking? The code is the exact same (except I replaced "u16" 
> with "unsigned short" to avoid the #include), and produces the exact same 
> error message, and the fix is the same ("g" -> "rm").
>   

Well, since it works, I guess I'm overlooking something.  Maybe it's 
just a bad error message from gcc.

I'll apply this.  Thanks!

> ------------------------------------------------------------------------
>
> --- linux-2.6.18/drivers/kvm/kvm_main.c.ark	2006-11-12 14:40:09.000000000 +0100
> +++ linux-2.6.18/drivers/kvm/kvm_main.c	2006-11-12 14:44:57.000000000 +0100
> @@ -150,12 +150,12 @@
>  
>  static void load_fs(u16 sel)
>  {
> -	asm ("mov %0, %%fs" : : "g"(sel));
> +	asm ("mov %0, %%fs" : : "rm"(sel));
>  }
>  
>  static void load_gs(u16 sel)
>  {
> -	asm ("mov %0, %%gs" : : "g"(sel));
> +	asm ("mov %0, %%gs" : : "rm"(sel));
>  }
>  
>  #ifndef load_ldt
>   


-- 
error compiling committee.c: too many arguments to function

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists