Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit af36bef0 authored by Russell King's avatar Russell King Committed by Russell King
Browse files

[ARM] Fix csumpartial corner case



Ji-In Park discovered a bug in csumpartial which caused wrong
checksums with misaligned buffers.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 3b44f137
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ td3 .req lr

		/* we must have at least one byte. */
		tst	buf, #1			@ odd address?
		movne	sum, sum, ror #8
		ldrneb	td0, [buf], #1
		subne	len, len, #1
		adcnes	sum, sum, td0, put_byte_1
@@ -103,6 +104,9 @@ ENTRY(csum_partial)
		cmp	len, #8			@ Ensure that we have at least
		blo	.less8			@ 8 bytes to copy.

		tst	buf, #1
		movne	sum, sum, ror #8

		adds	sum, sum, #0		@ C = 0
		tst	buf, #3			@ Test destination alignment
		blne	.not_aligned		@ aligh destination, return here