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] [day] [month] [year] [list]
Message-ID: <49BC354E.4070809@goop.org>
Date:	Sat, 14 Mar 2009 15:53:02 -0700
From:	Jeremy Fitzhardinge <jeremy@...p.org>
To:	David Newall <davidn@...idnewall.com>
CC:	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: Screwy arch/x86/include/asm/string_32.h

David Newall wrote:
> There's a lot of weirdness in __constant_memcpy in
> arch/x86/include/asm/string_32.h (2.6.29-rc7).
>
>    1. The first switch is missing a case for n equal 7.
>   
That's because there's no way to copy 7 bytes in two operations of 1/2/4 
bytes; it would need to be 3 (4+2+1), which I guess the author deemed 
overly complex.

>    2. When n < 20, the four tests (n > 16, n > 12, n > 8 & n > 4)
>       execute identical statements; always 'asm volatile("movsl" :
>       "=&D"(edi), "=&S"(esi) : "0"(edi), "1"(esi) : "memory")'.
>   

movs is a string instruction which has the side-effect of incrementing 
esi and edi, so each if() falls through to copy the next 4 bytes.

However, the tail switch should probably use plain "mov" rather than 
"movs" because nobody uses esi/edi afterwards.

    J
--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ