lkml.org 
[lkml]   [2016]   [Dec]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v2 1/4] siphash: add cryptographically secure hashtable function
    From
    Date
    On 15.12.2016 12:04, David Laight wrote:
    > From: Hannes Frederic Sowa
    >> Sent: 14 December 2016 22:03
    >> On 14.12.2016 13:46, Jason A. Donenfeld wrote:
    >>> Hi David,
    >>>
    >>> On Wed, Dec 14, 2016 at 10:56 AM, David Laight <David.Laight@aculab.com> wrote:
    >>>> ...
    >>>>> +u64 siphash24(const u8 *data, size_t len, const u8 key[SIPHASH24_KEY_LEN])
    >>>> ...
    >>>>> + u64 k0 = get_unaligned_le64(key);
    >>>>> + u64 k1 = get_unaligned_le64(key + sizeof(u64));
    >>>> ...
    >>>>> + m = get_unaligned_le64(data);
    >>>>
    >>>> All these unaligned accesses are going to get expensive on architectures
    >>>> like sparc64.
    >>>
    >>> Yes, the unaligned accesses aren't pretty. Since in pretty much all
    >>> use cases thus far, the data can easily be made aligned, perhaps it
    >>> makes sense to create siphash24() and siphash24_unaligned(). Any
    >>> thoughts on doing something like that?
    >>
    >> I fear that the alignment requirement will be a source of bugs on 32 bit
    >> machines, where you cannot even simply take a well aligned struct on a
    >> stack and put it into the normal siphash(aligned) function without
    >> adding alignment annotations everywhere. Even blocks returned from
    >> kmalloc on 32 bit are not aligned to 64 bit.
    >
    > Are you doing anything that will require 64bit alignment on 32bit systems?
    > It is unlikely that the kernel can use any simd registers that have wider
    > alignment requirements.
    >
    > You also really don't want to request on-stack items have large alignments.
    > While gcc can generate code to do it, it isn't pretty.

    Hmm? Even the Intel ABI expects alignment of unsigned long long to be 8
    bytes on 32 bit. Do you question that?



    \
     
     \ /
      Last update: 2016-12-15 13:23    [W:4.097 / U:1.916 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site