Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934309AbcLNXa7 (ORCPT ); Wed, 14 Dec 2016 18:30:59 -0500 Received: from mail-it0-f68.google.com ([209.85.214.68]:36152 "EHLO mail-it0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933121AbcLNXa5 (ORCPT ); Wed, 14 Dec 2016 18:30:57 -0500 MIME-Version: 1.0 In-Reply-To: References: <20161214035927.30004-1-Jason@zx2c4.com> <20161214184605.24006-1-Jason@zx2c4.com> From: Linus Torvalds Date: Wed, 14 Dec 2016 15:30:55 -0800 X-Google-Sender-Auth: xhkEzcq5PRlcTMwAa4gEROLKTdg Message-ID: Subject: Re: [PATCH v3 1/3] siphash: add cryptographically secure hashtable function To: "Jason A. Donenfeld" Cc: Tom Herbert , Netdev , "kernel-hardening@lists.openwall.com" , LKML , Linux Crypto Mailing List , Jean-Philippe Aumasson , "Daniel J . Bernstein" , Eric Biggers , David Laight Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1193 Lines: 35 On Wed, Dec 14, 2016 at 2:56 PM, Jason A. Donenfeld wrote: > > So actually jhash_Nwords makes no sense, since it takes dwords > (32-bits) not words (16-bits). The siphash analog should be called > siphash24_Nqwords. No. The bug is talking about "words" in the first place. Depending on your background, a "word" can be generally be either 16 bits or 32 bits (or, in some cases, 18 bits). In theory, a 64-bit entity can be a "word" too, but pretty much nobody uses that. Even architectures that started out with a 64-bit register size and never had any smaller historical baggage (eg alpha) tend to call 32-bit entities "words". So 16 bits can be a word, but some people/architectures will call it a "half-word". To make matters even more confusing, a "quadword" is generally always 64 bits, regardless of the size of "word". So please try to avoid the use of "word" entirely. It's too ambiguous, and it's not even helpful as a "size of the native register". It's almost purely random. For the kernel, we tend use - uX for types that have specific sizes (X being the number of bits) - "[unsigned] long" for native register size But never "word". Linus