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:	Mon, 04 Oct 2010 18:15:18 -0400
From:	Steven Rostedt <rostedt@...dmis.org>
To:	"H. Peter Anvin" <hpa@...or.com>
Cc:	Jason Baron <jbaron@...hat.com>, Daniel Drake <dsd@...top.org>,
	Andres Salomon <dilinger@...ued.net>,
	Chris Ball <cjb@...top.org>, linux-kernel@...r.kernel.org,
	mingo@...e.hu
Subject: Re: Dynamic nop selection breaks boot on Geode LX

On Mon, 2010-10-04 at 14:51 -0700, H. Peter Anvin wrote:
> On 10/04/2010 08:46 AM, Jason Baron wrote:
> > 
> > move arch_init_ideal_nop5 later
> > 
> > arch_init_ideal_nop5() was being called from setup_arch() before
> > the exception table was setup. Move it later into
> > alternative_instructions().
> > 
> > Fixes a boot hang on OLPC's XO-1 laptop based on Geode LX
> > processor.
> > 
> 
> This code is fundamentally toxic and needs to be scrapped completely --
> it is simply broken beyond repair.
> 
> We tried exactly this type of dynamic selection before, and it doesn't
> work on broken virtualizers; in particular Microsoft VirtualPC can pass
> the exception test and yet fail later.

So the code is broken because of broken virtualizers??

> 
> The end result is very simple: you can always use NOPL on 64 bits, you
> can never use NOPL on 32 bits.
> 
> 66 66 66 66 90 will always *work* (as in, it will never fail) but it's
> pretty slow on older CPUs which took a hit on handle prefixes -- but it
> might still be faster than a jump on those.  Thus, in your code the JMP
> case will never be reached anyway.

The jmp was there because of paranoia, and I never expected it to be
reached.

> 
> There isn't, of course, a classic 5-byte sequence, although the sequence:
> 
> 	2E 8D 75 26 00
> 
> ... should work (leal %ds:0(,%esi,1),%esi).  However, 66 ... 90 is
> likely to work better on modern processors (although I haven't measured it.)

The point is, this nop will be at _every_ function call (it replaces the
mcount call). Not just scattered throughout the kernel. It is imperative
that we have the best nop available.

So what would you recommend?

-- Steve


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