s introduces a alignment issue: tmp is not aligned for __u32, but is
dereferenced as such later.
> d = >state[4];
> for (i=0; i < 8; i++)
> *d++ ^= *s++;
> spin_unlock_irqrestore(>lock, flags);
> }
>
Regards.
--
Yann Droneaud
OPTEYA
t; spin_lock_irqsave(>lock, flags);
> - s = [used / sizeof(__u32)];
> + s = (__u32 *) [used];
tmp is __8* while s is __u32*, that sounds like an alignment issue ...
> d = >state[4];
> for (i=0; i < 8; i++)
> *d++ ^= *s++;
... when s is dereferenced
> spin_unlock_irqrestore(>lock, flags);
> }
>
Regards.
--
Yann Droneaud
OPTEYA