diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2013-10-01 02:54:05 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-10-03 03:22:36 -0400 |
commit | d9813c3681a36774b254c0cdc9cce53c9e22c756 (patch) | |
tree | 8aaf4c7d3f7c9984084e00476bd7d61c6230405f /arch/powerpc | |
parent | f7e3334a6bcb42e7295a9bd9cb36ca4e6e4e66b4 (diff) |
powerpc: Fix parameter clobber in csum_partial_copy_generic()
The csum_partial_copy_generic() uses register r7 to adjust the remaining
bytes to process. Unfortunately, r7 also holds a parameter, namely the
address of the flag to set in case of access exceptions while reading
the source buffer. Lacking a quantum implementation of PowerPC, this
commit instead uses register r9 to do the adjusting, leaving r7's
pointer uncorrupted.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Anton Blanchard <anton@samba.org>
Cc: stable@vger.kernel.org
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/lib/checksum_64.S | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/powerpc/lib/checksum_64.S b/arch/powerpc/lib/checksum_64.S index 167f72555d60..609665aede75 100644 --- a/arch/powerpc/lib/checksum_64.S +++ b/arch/powerpc/lib/checksum_64.S | |||
@@ -269,8 +269,8 @@ _GLOBAL(csum_partial_copy_generic) | |||
269 | rldicl. r6,r3,64-1,64-2 /* r6 = (r3 & 0x3) >> 1 */ | 269 | rldicl. r6,r3,64-1,64-2 /* r6 = (r3 & 0x3) >> 1 */ |
270 | beq .Lcopy_aligned | 270 | beq .Lcopy_aligned |
271 | 271 | ||
272 | li r7,4 | 272 | li r9,4 |
273 | sub r6,r7,r6 | 273 | sub r6,r9,r6 |
274 | mtctr r6 | 274 | mtctr r6 |
275 | 275 | ||
276 | 1: | 276 | 1: |