diff mbox

randconfig build error with next-20150529, in crypto/jitterentropy.c

Message ID 55762581.6070809@roeck-us.net (mailing list archive)
State Not Applicable
Delegated to: Herbert Xu
Headers show

Commit Message

Guenter Roeck June 8, 2015, 11:30 p.m. UTC
On 06/08/2015 03:36 PM, Stephan Mueller wrote:
> Am Monday 08 June 2015, 12:54:12 schrieb Guenter Roeck:
>
> Hi Guenter,
>
> Thanks for the note.
>
> ...
>>
>> ---
>>
>> openrisc:defconfig:
>>
>> In file included from ./arch/openrisc/include/asm/timex.h:23:0,
>> 	...
>> 	from crypto/jitterentropy.c:52:
>> ./arch/openrisc/include/asm/spr.h: In function 'jent_loop_shuffle':
>> ./arch/openrisc/include/asm/spr.h:30:2: warning: asm operand 1 probably
>> doesn't match constraints
>> ./arch/openrisc/include/asm/spr.h:30:2: error: impossible constraint in 'asm'
>
> I received this one also before. But that seems to be an error on the OpenRISC
> platform as the random_get_entropy() function or the get_cycles function is
> not implemented as defined.
>
> The crypto code uses the following which triggers the issue:
>
>          __u64 tmp = 0;
>
>          tmp = random_get_entropy();
>
> That one seems to be an appropriate use of random_get_entropy() which on
> almost all arches is an alias for get_cycles().

Yes and no. I suspect it may have something to do with the compiler options.
The code compiles with the following patch applied.

---

---

get_cycles is implemented as static inline which executes mfspr(SPR_TTCR).
SPR_TTCR is a constant. Normally that information seems to be passed on,
but not when get_cycles() is compiled through jitterentropy.

Any idea what might cause this ?

Thanks,
Guenter

--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Stephan Mueller June 8, 2015, 11:33 p.m. UTC | #1
Am Monday 08 June 2015, 16:30:09 schrieb Guenter Roeck:

Hi Guenter,

>
>get_cycles is implemented as static inline which executes mfspr(SPR_TTCR).
>SPR_TTCR is a constant. Normally that information seems to be passed on,
>but not when get_cycles() is compiled through jitterentropy.
>
>Any idea what might cause this ?

Then it may be the optimization issue as well that Peter indicated. May I ask 
you for testing purposes (I do not have an OpenRISC) to remove the following 
line from crypto/Makefile:

CFLAGS_jitterentropy.o = -O0

Note, that should just serve for testing. I will post a patch later that will 
replace the -O0 statement with a pragma.

Thanks a lot.
>
>Thanks,
>Guenter


Ciao
Stephan
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Guenter Roeck June 8, 2015, 11:51 p.m. UTC | #2
On 06/08/2015 04:33 PM, Stephan Mueller wrote:
> Am Monday 08 June 2015, 16:30:09 schrieb Guenter Roeck:
>
> Hi Guenter,
>
>>
>> get_cycles is implemented as static inline which executes mfspr(SPR_TTCR).
>> SPR_TTCR is a constant. Normally that information seems to be passed on,
>> but not when get_cycles() is compiled through jitterentropy.
>>
>> Any idea what might cause this ?
>
> Then it may be the optimization issue as well that Peter indicated. May I ask
> you for testing purposes (I do not have an OpenRISC) to remove the following
> line from crypto/Makefile:
>
> CFLAGS_jitterentropy.o = -O0
>

Yes, that fixes the problem (after I also removed the associated #error from
jitterentropy.c).

Guenter

--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Stephan Mueller June 9, 2015, 12:10 a.m. UTC | #3
Am Monday 08 June 2015, 16:51:24 schrieb Guenter Roeck:

Hi Guenter,

>
>Yes, that fixes the problem (after I also removed the associated #error from
>jitterentropy.c).

Thank you for the confirmation. The patch will come tonight on this issue as I 
tested the cryptographic impact already.

Thanks a lot for your help.


Ciao
Stephan
--
To unsubscribe from this list: send the line "unsubscribe linux-crypto" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/openrisc/include/asm/spr.h b/arch/openrisc/include/asm/spr.h
index 1cccb42dd477..373532cc41f4 100644
--- a/arch/openrisc/include/asm/spr.h
+++ b/arch/openrisc/include/asm/spr.h
@@ -24,7 +24,7 @@ 
         "l.mtspr %0,%1,%2"                                      \
         : : "r" (_off), "r" (_val), "K" (_spr))

-static inline unsigned long mfspr(unsigned long add)
+static inline unsigned long mfspr(const unsigned long add)
  {
         unsigned long ret;
         __asm__ __volatile__ ("l.mfspr %0,r0,%1" : "=r" (ret) : "K" (add));