From patchwork Sat Feb 8 02:49:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 863381 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7B54829D0E; Sat, 8 Feb 2025 02:49:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738982963; cv=none; b=ZVA5/bYjd8mhaqrhayW6hC8rF8oJoDipz9Tv5fmTjmHp8ss2KPfzjQWQuxqY3+/Is+fBwaI+/TGaTfJ1+/tfA76CDaVgJ0DGAgBoTwlVMVB78O4oz6zcf4OdFudYUgnHF1NVbefiQCu13jHH2dwAN4uoUxlGS74o5gxMQ9Sppf8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738982963; c=relaxed/simple; bh=CcbjCnOKgUgi0bXsM96+1hSnj0FEL/khYEZSB2AazeA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=t5hKP34P8QojSiF/f3+xaFwRY3/QwduS/g8M5GTSTYNmVp3d6Srlc2dID1/hYjL6+NMeFTsEscIZd2I1F8Pg/zE2CMdfuQenaA6kXixcwp+fxH3/FQTJZXntZQI52s2O8XoMFni3QqmwkuNLXs5C5eYA5iXx4eMgi5KygjdJEq8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XHzXWgiG; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="XHzXWgiG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E9BDFC4CED6; Sat, 8 Feb 2025 02:49:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738982963; bh=CcbjCnOKgUgi0bXsM96+1hSnj0FEL/khYEZSB2AazeA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XHzXWgiGWT7/za6es3R66EVIPwn7nolhuIKqtLFEU/Qbkraq/6to5kCTx9rzNMRk9 82b+gAYRg+uSrzQSKVvghqziDRXD9KZ4X1rj3TI4nOOXuioQ/G8lFSFGUDg+U7Qwb+ aVIsqlfkLQ4eY099lMOtwYLJH6D/SxAvbTNbFqhNGXKMAQA+vrKBXMY8qWSLIEnJZ2 zYHAjd3uOi0TDKo6+Udr/uSyVg5yh7qEvY8pBsqvDKg93K96S3toNpZ27LRnPIiGWA YA+Xtf9hYotEJpMPEQf4DTKz7gdmGhHkjWckziniERjljpc9J92nqcSPyAqNsFH9U3 L/OJUkpzLOGiA== From: Eric Biggers To: linux-kernel@vger.kernel.org Cc: linux-crypto@vger.kernel.org, Ard Biesheuvel , Nathan Chancellor Subject: [PATCH v2 1/6] mips/crc32: remove unused enums Date: Fri, 7 Feb 2025 18:49:06 -0800 Message-ID: <20250208024911.14936-2-ebiggers@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250208024911.14936-1-ebiggers@kernel.org> References: <20250208024911.14936-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-crypto@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Eric Biggers Remove enum crc_op_size and enum crc_type, since they are never actually used. Tokens with the names of the enum values do appear in the file, but they are only used for token concatenation with the preprocessor. This prevents a conflict with the addition of crc32c() to linux/crc32.h. Reported-by: Nathan Chancellor Closes: https://lore.kernel.org/r/20250207224233.GA1261167@ax162 Signed-off-by: Eric Biggers --- arch/mips/lib/crc32-mips.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/arch/mips/lib/crc32-mips.c b/arch/mips/lib/crc32-mips.c index 083e5d693a169..100ac586aadb2 100644 --- a/arch/mips/lib/crc32-mips.c +++ b/arch/mips/lib/crc32-mips.c @@ -14,19 +14,10 @@ #include #include #include #include -enum crc_op_size { - b, h, w, d, -}; - -enum crc_type { - crc32, - crc32c, -}; - #ifndef TOOLCHAIN_SUPPORTS_CRC #define _ASM_SET_CRC(OP, SZ, TYPE) \ _ASM_MACRO_3R(OP, rt, rs, rt2, \ ".ifnc \\rt, \\rt2\n\t" \ ".error \"invalid operands \\\"" #OP " \\rt,\\rs,\\rt2\\\"\"\n\t" \ From patchwork Sat Feb 8 02:49:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 863380 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B997D1514E4; Sat, 8 Feb 2025 02:49:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738982963; cv=none; b=j0bb3bkTlVQpEGKeN3Wf5cviEatd1QDsnZCrW6jkDpE4GdaAI5fn4zrjbHhWNh9iFkPICoVexOcMEHydUfPCfEcION6nYwQBbdvXo7VqPTtA2drNpuDBZsFsRowpU9/qrWnwDCPecavQrXjNgkiFR0sohQ6K4qnCiFu8TF+aGpo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738982963; c=relaxed/simple; bh=UKNOpRq17HglB9yaAPYXxH+dAXWyU/9qtlMNOx890CA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eXq88j7ESbD3L5ZkzWbkJRzjZ1MbeRReIPH/HpRqCfMsstsAlA4Yln7u4FzAOdyMthGDOyiONNhoy5dUtAE81/182idwW7OVSNTaHkQ9mxAuYZTSBs5yaop4faMLgAOQ1iy/uPT7LpiPJ0qVjmYO0U8DAM+WeKG4Ze5q0gt7BBo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pzXD6Vhq; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="pzXD6Vhq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3BD40C4CEE6; Sat, 8 Feb 2025 02:49:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738982963; bh=UKNOpRq17HglB9yaAPYXxH+dAXWyU/9qtlMNOx890CA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pzXD6VhqfQbZzGTIOLcudLteIcsTwk8A72fHLdL6pMdf/xEfP0RWBFHrSMxxYrgwU yeV95g8pYAtUoOpDaOPh8+NSXse0ElEEexHGqNCFvI6KKm155c1JH5aFT8A2HjFVPG YbMkG0SMdez/x8R19HAzFKZN07dlV+fpESJO4Oon3sgDZdmSVmFPk0DvDxRXN9pGr+ T5fNyKWnzGjQtftCcUBZRcY+wikNtkfyqDE+2XkEst23NDGc4ym4FCn8UJL1iR0EfK 50vouHi0ezyj4lmuUTmFEgP0zjhMm/s2r2Vjt6+YOp1KK9LW4kvyulKAxZs/qrAs5s fK8tVGiRSRRhA== From: Eric Biggers To: linux-kernel@vger.kernel.org Cc: linux-crypto@vger.kernel.org, Ard Biesheuvel Subject: [PATCH v2 2/6] lib/crc32: use void pointer for data Date: Fri, 7 Feb 2025 18:49:07 -0800 Message-ID: <20250208024911.14936-3-ebiggers@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250208024911.14936-1-ebiggers@kernel.org> References: <20250208024911.14936-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-crypto@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Eric Biggers Update crc32_le(), crc32_be(), and __crc32c_le() to take the data as a 'const void *' instead of 'const u8 *'. This makes them slightly easier to use, as it can eliminate the need for casts in the calling code. It's the only pointer argument, so there is no possibility for confusion with another pointer argument. Also, some of the CRC library functions, for example crc32c() and crc64_be(), already used 'const void *'. Let's standardize on that, as it seems like a better choice. The underlying base and arch functions continue to use 'const u8 *', as that is often more convenient for the implementation. Reviewed-by: Ard Biesheuvel Signed-off-by: Eric Biggers --- include/linux/crc32.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/linux/crc32.h b/include/linux/crc32.h index e9bd40056687a..e70977014cfdc 100644 --- a/include/linux/crc32.h +++ b/include/linux/crc32.h @@ -13,26 +13,26 @@ u32 __pure crc32_le_base(u32 crc, const u8 *p, size_t len); u32 __pure crc32_be_arch(u32 crc, const u8 *p, size_t len); u32 __pure crc32_be_base(u32 crc, const u8 *p, size_t len); u32 __pure crc32c_le_arch(u32 crc, const u8 *p, size_t len); u32 __pure crc32c_le_base(u32 crc, const u8 *p, size_t len); -static inline u32 __pure crc32_le(u32 crc, const u8 *p, size_t len) +static inline u32 __pure crc32_le(u32 crc, const void *p, size_t len) { if (IS_ENABLED(CONFIG_CRC32_ARCH)) return crc32_le_arch(crc, p, len); return crc32_le_base(crc, p, len); } -static inline u32 __pure crc32_be(u32 crc, const u8 *p, size_t len) +static inline u32 __pure crc32_be(u32 crc, const void *p, size_t len) { if (IS_ENABLED(CONFIG_CRC32_ARCH)) return crc32_be_arch(crc, p, len); return crc32_be_base(crc, p, len); } /* TODO: leading underscores should be dropped once callers have been updated */ -static inline u32 __pure __crc32c_le(u32 crc, const u8 *p, size_t len) +static inline u32 __pure __crc32c_le(u32 crc, const void *p, size_t len) { if (IS_ENABLED(CONFIG_CRC32_ARCH)) return crc32c_le_arch(crc, p, len); return crc32c_le_base(crc, p, len); } From patchwork Sat Feb 8 02:49:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 863379 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 89E5717A5BE; Sat, 8 Feb 2025 02:49:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738982964; cv=none; b=PLzc0x5boLCgNI4164Qnvjwroliie9WPsaFWSAzLQmJJGbvJgnZSXUk7PuN+a15qdnKFO9Qta7KKoAG7Rk0+nf8kGpZ+QvXmgo2kdF02gkIvmxLBgbi10GW+1qO0wVC8hlbft4DR0ORWxIm81MlNE5d5k+RnFNl3gqIvwdBK//8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738982964; c=relaxed/simple; bh=iSmynFUGEVW5Xd47UgfUiv25eLbOG/E5uXrX9p5Fu8Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SsPeZH7CZKDHcB4Ev3r0PHKjJJqXecua8F/8sKyymh7MTl56VxpcluJZd7rj/pSBXr6h5fJVL0yLPcYnWNHJWj5LpjJioLi3ethtWcDJ8Uc3GORr+vPgacVh++q+If31ir/wjzlL88CZosTtaQw8PjURXwwqg15uaMCPxiFUPsE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pwNTole5; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="pwNTole5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 03101C4CEE7; Sat, 8 Feb 2025 02:49:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1738982964; bh=iSmynFUGEVW5Xd47UgfUiv25eLbOG/E5uXrX9p5Fu8Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pwNTole5BaY9WapbbYumY4hsnaIJE+UAdI5VJtSC9FYKDKoN6dGrKKnwSwIraD5Ey Oq0/XMjsT7Kb7DkN1hfECuSvMXtXcHqJ3K6VYVI9jkbMg8v+oXUj4GjvA9gzFoBujC v0O3NxdakZxYWNuLCn+CcptO82BJFn0kHm196iSCFLuyXgIeeW1tXl8qsXpysSq6vK pkpCN8ASNNXiN3g/84Q9zQUMaYmJiLWfB1PoPd7h2ovYi4haYRu7EVvHK9f9sU0l1p YBYnMEoMV2aEG+OS390V9e0b2mgiEJUKgzazI8QYAzhI402n3W3o6vgle2n///Rec8 h1EFpkntwB4wA== From: Eric Biggers To: linux-kernel@vger.kernel.org Cc: linux-crypto@vger.kernel.org, Ard Biesheuvel Subject: [PATCH v2 5/6] lib/crc32: rename __crc32c_le_combine() to crc32c_combine() Date: Fri, 7 Feb 2025 18:49:10 -0800 Message-ID: <20250208024911.14936-6-ebiggers@kernel.org> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250208024911.14936-1-ebiggers@kernel.org> References: <20250208024911.14936-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-crypto@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Eric Biggers Since the Castagnoli CRC32 is now always just crc32c(), rename __crc32c_le_combine() and __crc32c_le_shift() accordingly. Reviewed-by: Ard Biesheuvel Signed-off-by: Eric Biggers --- drivers/infiniband/sw/siw/siw.h | 4 ++-- include/linux/crc32.h | 28 +++++++++++++--------------- include/net/sctp/checksum.h | 4 ++-- lib/crc32.c | 6 +++--- lib/crc_kunit.c | 2 +- 5 files changed, 21 insertions(+), 23 deletions(-) diff --git a/drivers/infiniband/sw/siw/siw.h b/drivers/infiniband/sw/siw/siw.h index ea5eee50dc39d..4e692de1da933 100644 --- a/drivers/infiniband/sw/siw/siw.h +++ b/drivers/infiniband/sw/siw/siw.h @@ -674,12 +674,12 @@ static inline __wsum siw_csum_update(const void *buff, int len, __wsum sum) } static inline __wsum siw_csum_combine(__wsum csum, __wsum csum2, int offset, int len) { - return (__force __wsum)__crc32c_le_combine((__force __u32)csum, - (__force __u32)csum2, len); + return (__force __wsum)crc32c_combine((__force __u32)csum, + (__force __u32)csum2, len); } static inline void siw_crc_skb(struct siw_rx_stream *srx, unsigned int len) { const struct skb_checksum_ops siw_cs_ops = { diff --git a/include/linux/crc32.h b/include/linux/crc32.h index bc39b023eac0f..535071964f52f 100644 --- a/include/linux/crc32.h +++ b/include/linux/crc32.h @@ -74,33 +74,31 @@ u32 crc32_le_shift(u32 crc, size_t len); static inline u32 crc32_le_combine(u32 crc1, u32 crc2, size_t len2) { return crc32_le_shift(crc1, len2) ^ crc2; } +u32 crc32c_shift(u32 crc, size_t len); + /** - * __crc32c_le_combine - Combine two crc32c check values into one. For two - * sequences of bytes, seq1 and seq2 with lengths len1 - * and len2, __crc32c_le() check values were calculated - * for each, crc1 and crc2. + * crc32c_combine - Combine two crc32c check values into one. For two sequences + * of bytes, seq1 and seq2 with lengths len1 and len2, crc32c() + * check values were calculated for each, crc1 and crc2. * * @crc1: crc32c of the first block * @crc2: crc32c of the second block * @len2: length of the second block * - * Return: The __crc32c_le() check value of seq1 and seq2 concatenated, - * requiring only crc1, crc2, and len2. Note: If seq_full denotes - * the concatenated memory area of seq1 with seq2, and crc_full - * the __crc32c_le() value of seq_full, then crc_full == - * __crc32c_le_combine(crc1, crc2, len2) when crc_full was - * seeded with the same initializer as crc1, and crc2 seed - * was 0. See also crc32c_combine_test(). + * Return: The crc32c() check value of seq1 and seq2 concatenated, requiring + * only crc1, crc2, and len2. Note: If seq_full denotes the concatenated + * memory area of seq1 with seq2, and crc_full the crc32c() value of + * seq_full, then crc_full == crc32c_combine(crc1, crc2, len2) when + * crc_full was seeded with the same initializer as crc1, and crc2 seed + * was 0. See also crc_combine_test(). */ -u32 __crc32c_le_shift(u32 crc, size_t len); - -static inline u32 __crc32c_le_combine(u32 crc1, u32 crc2, size_t len2) +static inline u32 crc32c_combine(u32 crc1, u32 crc2, size_t len2) { - return __crc32c_le_shift(crc1, len2) ^ crc2; + return crc32c_shift(crc1, len2) ^ crc2; } #define crc32(seed, data, length) crc32_le(seed, (unsigned char const *)(data), length) /* diff --git a/include/net/sctp/checksum.h b/include/net/sctp/checksum.h index 93041c970753e..291465c258102 100644 --- a/include/net/sctp/checksum.h +++ b/include/net/sctp/checksum.h @@ -34,12 +34,12 @@ static inline __wsum sctp_csum_update(const void *buff, int len, __wsum sum) } static inline __wsum sctp_csum_combine(__wsum csum, __wsum csum2, int offset, int len) { - return (__force __wsum)__crc32c_le_combine((__force __u32)csum, - (__force __u32)csum2, len); + return (__force __wsum)crc32c_combine((__force __u32)csum, + (__force __u32)csum2, len); } static const struct skb_checksum_ops sctp_csum_ops = { .update = sctp_csum_update, .combine = sctp_csum_combine, diff --git a/lib/crc32.c b/lib/crc32.c index 3c080cda5e1c9..554ef6827b80d 100644 --- a/lib/crc32.c +++ b/lib/crc32.c @@ -115,17 +115,17 @@ static u32 crc32_generic_shift(u32 crc, size_t len, u32 polynomial) u32 crc32_le_shift(u32 crc, size_t len) { return crc32_generic_shift(crc, len, CRC32_POLY_LE); } +EXPORT_SYMBOL(crc32_le_shift); -u32 __crc32c_le_shift(u32 crc, size_t len) +u32 crc32c_shift(u32 crc, size_t len) { return crc32_generic_shift(crc, len, CRC32C_POLY_LE); } -EXPORT_SYMBOL(crc32_le_shift); -EXPORT_SYMBOL(__crc32c_le_shift); +EXPORT_SYMBOL(crc32c_shift); u32 crc32_be_base(u32 crc, const u8 *p, size_t len) { while (len--) crc = (crc << 8) ^ crc32table_be[(crc >> 24) ^ *p++]; diff --git a/lib/crc_kunit.c b/lib/crc_kunit.c index 1e82fcf9489ef..40b4b41f21847 100644 --- a/lib/crc_kunit.c +++ b/lib/crc_kunit.c @@ -361,11 +361,11 @@ static u64 crc32c_wrapper(u64 crc, const u8 *p, size_t len) return crc32c(crc, p, len); } static u64 crc32c_combine_wrapper(u64 crc1, u64 crc2, size_t len2) { - return __crc32c_le_combine(crc1, crc2, len2); + return crc32c_combine(crc1, crc2, len2); } static const struct crc_variant crc_variant_crc32c = { .bits = 32, .le = true,