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  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:	Sat, 9 Aug 2008 17:57:32 +0200
From:	Wolfgang Walter <wolfgang.walter@...m.de>
To:	Herbert Xu <herbert@...dor.apana.org.au>
Cc:	Suresh Siddha <suresh.b.siddha@...el.com>,
	"H. Peter Anvin" <hpa@...or.com>,
	"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	Ingo Molnar <mingo@...e.hu>,
	"viro@...IV.linux.org.uk" <viro@...iv.linux.org.uk>,
	"vegard.nossum@...il.com" <vegard.nossum@...il.com>
Subject: Re: Kernel oops with 2.6.26, padlock and ipsec: probably problem with fpu state changes

On Saturday 09 August 2008, Herbert Xu wrote:
> On Fri, Aug 08, 2008 at 04:11:21PM -0700, Suresh Siddha wrote:
> >
> > With out the recent dynamic fpu allocation changes, while we don't see 
oops,
> > there is a possible race still present in older kernels(for example,
> > while kernel is using kernel_fpu_begin() in some optimized clear/copy
> > page and an interrupt/softirq happens which uses these padlock
> > instructions generating DNA fault).
> 
> No this wasn't a problem because kernel_fpu_begin clears TS and
> therefore we don't get faults on SSE instructions.
> 
> However, with your patch it will become a problem due to the
> fact that it wasn't designed to be nested.
> 


I don't exactly understand this. You think that

kernel_fpu_begin();
XCRYPT....
kernel_fpu_end();

is a problem and wasn't before?

Say we have a software crypt-alg which uses optimized memcpy implemented with 
SSE instructions. These are protected with kernel_fpu_begin(); 
kernel_fpu_end();

So we have also code

kernel_fpu_begin();
SSE....
kernel_fpu_end();

in crypto called under same circumstances.

If XCRYPT may be interrupted and the interrupt code again uses this optimized 
memcpy implementation and so nesting kernel_fpu_begin then why should this 
not happen with the other alg.

How could any kernel code use MMX/SSE/FPU when the interrupt case isn't 
handled?


Or is your argument that its lazy allocation itself is the problem: this 
nesting could always happen and was a bug but only with lazy allocation it is 
dangerous (as it may cause a spurious math fault in the race window).

If this were right than any kernel code executing SSE may trigger now a oops 
in __switch_to() under some special circumstances.


Regards,
-- 
Wolfgang Walter
Studentenwerk München
Anstalt des öffentlichen Rechts
Leiter EDV
Leopoldstraße 15
80802 München
Tel: +49 89 38196-276
Fax: +49 89 38196-144
wolfgang.walter@...m.de
http://www.studentenwerk-muenchen.de/
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists