• Alexander Duyck's avatar
    jhash: Update jhash_[321]words functions to use correct initval · 2e7056c4
    Alexander Duyck authored
    Looking over the implementation for jhash2 and comparing it to jhash_3words
    I realized that the two hashes were in fact very different.  Doing a bit of
    digging led me to "The new jhash implementation" in which lookup2 was
    supposed to have been replaced with lookup3.
    
    In reviewing the patch I noticed that jhash2 had originally initialized a
    and b to JHASH_GOLDENRATIO and c to initval, but after the patch a, b, and
    c were initialized to initval + (length << 2) + JHASH_INITVAL.  However the
    changes in jhash_3words simply replaced the initialization of a and b with
    JHASH_INITVAL.
    
    This change corrects what I believe was an oversight so that a, b, and c in
    jhash_3words all have the same value added consisting of initval + (length
    << 2) + JHASH_INITVAL so that jhash2 and jhash_3words will now produce the
    same hash result given the same inputs.
    
    Fixes: 60d509c8 ("The new jhash implementation")
    Signed-off-by: 's avatarAlexander Duyck <alexander.h.duyck@redhat.com>
    Signed-off-by: 's avatarDavid S. Miller <davem@davemloft.net>
    2e7056c4
jhash.h 4.46 KB