Commit ca459e5f authored by WangYuli's avatar WangYuli Committed by Herbert Xu
Browse files

crypto: mips/crc32 - Clean up useless assignment operations



When entering the "len & sizeof(u32)" branch, len must be less than 8.
So after one operation, len must be less than 4.
At this time, "len -= sizeof(u32)" is not necessary for 64-bit CPUs.

After that, replace `while' loops with equivalent `for' to make the
code structure a little bit better by the way.

Suggested-by: default avatarMaciej W. Rozycki <macro@orcam.me.uk>
Link: https://lore.kernel.org/all/alpine.DEB.2.21.2406281713040.43454@angie.orcam.me.uk/


Suggested-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Link: https://lore.kernel.org/all/ZtqZpzMH_qMQqzyc@gondor.apana.org.au/


Signed-off-by: default avatarGuan Wentao <guanwentao@uniontech.com>
Signed-off-by: default avatarWangYuli <wangyuli@uniontech.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent f29ca8f7
Loading
Loading
Loading
Loading
+37 −33
Original line number Diff line number Diff line
@@ -77,24 +77,26 @@ static u32 crc32_mips_le_hw(u32 crc_, const u8 *p, unsigned int len)
{
	u32 crc = crc_;

#ifdef CONFIG_64BIT
	while (len >= sizeof(u64)) {
	if (IS_ENABLED(CONFIG_64BIT)) {
		for (; len >= sizeof(u64); p += sizeof(u64), len -= sizeof(u64)) {
			u64 value = get_unaligned_le64(p);

			CRC32(crc, value, d);
		p += sizeof(u64);
		len -= sizeof(u64);
		}

		if (len & sizeof(u32)) {
#else /* !CONFIG_64BIT */
	while (len >= sizeof(u32)) {
#endif
			u32 value = get_unaligned_le32(p);

			CRC32(crc, value, w);
			p += sizeof(u32);
		len -= sizeof(u32);
		}
	} else {
		for (; len >= sizeof(u32); len -= sizeof(u32)) {
			u32 value = get_unaligned_le32(p);

			CRC32(crc, value, w);
			p += sizeof(u32);
		}
	}

	if (len & sizeof(u16)) {
@@ -117,24 +119,26 @@ static u32 crc32c_mips_le_hw(u32 crc_, const u8 *p, unsigned int len)
{
	u32 crc = crc_;

#ifdef CONFIG_64BIT
	while (len >= sizeof(u64)) {
	if (IS_ENABLED(CONFIG_64BIT)) {
		for (; len >= sizeof(u64); p += sizeof(u64), len -= sizeof(u64)) {
			u64 value = get_unaligned_le64(p);

		CRC32C(crc, value, d);
		p += sizeof(u64);
		len -= sizeof(u64);
			CRC32(crc, value, d);
		}

		if (len & sizeof(u32)) {
#else /* !CONFIG_64BIT */
	while (len >= sizeof(u32)) {
#endif
			u32 value = get_unaligned_le32(p);

		CRC32C(crc, value, w);
			CRC32(crc, value, w);
			p += sizeof(u32);
		}
	} else {
		for (; len >= sizeof(u32); len -= sizeof(u32)) {
			u32 value = get_unaligned_le32(p);

			CRC32(crc, value, w);
			p += sizeof(u32);
		len -= sizeof(u32);
		}
	}

	if (len & sizeof(u16)) {