Re: SHA1-MB algorithm broken on latest kernel
From: Ingo Molnar
Date: Fri May 13 2016 - 01:51:15 EST
* Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> wrote:
> On Thu, May 12, 2016 at 04:31:06PM -0700, Megha Dey wrote:
> > Hi,
> >
> > When booting latest kernel with the CONFIG_CRYPTO_SHA1_MB enabled, I
> > observe a panic.
> >
> > After having a quick look, on reverting the following patches, I am able
> > to complete the booting process.
> > aec4d0e301f17bb143341c82cc44685b8af0b945
> > 8691ccd764f9ecc69a6812dfe76214c86ac9ba06
> > 68874ac3304ade7ed5ebb12af00d6b9bbbca0a16
> >
> > Of the 3 patches, aec4d0e301f17bb143341c82cc44685b8af0b945 seems wrong.
> > The r10 to r15 registers are used in sha1_x8_avx2.S, which is called
> > from sha1_mb_mgr_flush_avx2.S.
> >
> > I do not think the functionality of the SHA1-MB crypto algorithm has
> > been tested after applying these changes. (I am not sure if any of the
> > other crypto algorithms have been affected by these changes).
>
> Josh, Ingo:
>
> Any ideas on this? Should we revert?
Yeah, I think so - although another option would be to standardize sha1_x8_avx2()
- the problem is that it is a function that clobbers registers without
saving/restoring them, breaking the C function ABI. I realize it's written in
assembly, but unless there are strong performance reasons to deviate from the
regular calling convention it might make sense to fix that.
Do any warnings get generated after the revert, if you enable
CONFIG_STACK_VALIDATION=y?
Thanks,
Ingo