mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 05:48:40 +00:00
[ARM] Fix csumpartial corner case
Ji-In Park discovered a bug in csumpartial which caused wrong checksums with misaligned buffers. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
3b44f137b9
commit
af36bef0c5
1 changed files with 4 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue