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

Commit 72480ef8 authored by Paul Mackerras's avatar Paul Mackerras Committed by Linus Torvalds
Browse files

[PATCH] ppc32: Fix __copy_tofrom_user return value



Recently the __copy_tofrom_user routine was modified to avoid doing
prefetches past the end of the source array.  However, in doing so we
introduced a bug in that it now returns the wrong value for the number
of bytes not copied when a fault is encountered.  This fixes it to
return the correct number.

Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 3207a80a
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -446,6 +446,7 @@ _GLOBAL(__copy_tofrom_user)
#ifdef CONFIG_8xx
	/* Don't use prefetch on 8xx */
	mtctr	r0
	li	r0,0
53:	COPY_16_BYTES_WITHEX(0)
	bdnz	53b

@@ -564,7 +565,9 @@ _GLOBAL(__copy_tofrom_user)
/* or write fault in cacheline loop */
105:	li	r9,1
92:	li	r3,LG_CACHELINE_BYTES
	b	99f
	mfctr	r8
	add	r0,r0,r8
	b	106f
/* read fault in final word loop */
108:	li	r9,0
	b	93f
@@ -585,7 +588,7 @@ _GLOBAL(__copy_tofrom_user)
 * r5 + (ctr << r3), and r9 is 0 for read or 1 for write.
 */
99:	mfctr	r0
	slw	r3,r0,r3
106:	slw	r3,r0,r3
	add.	r3,r3,r5
	beq	120f			/* shouldn't happen */
	cmpwi	0,r9,0