Subject: memcpy.S patch in 64-bit

From: Carsten Langgaard <[email-masked]>
Date: Thu, 08 Aug 2002 15:24:47 +0200

The __copy_user function (in arch/mips64/lib/memcpy.S) calls __bzero.
We can't do that because __bzero might modify len, which we want to
return in case of an error.
The following patch take care of the problem.

/Carsten

--
_    _ ____  ___   Carsten Langgaard   Mailto:[email-masked]
|\  /|||___)(___   MIPS Denmark        Direct: +45 4486 5527
| \/ |||    ____)  Lautrupvang 4B      Switch: +45 4486 5555
  TECHNOLOGIES     2750 Ballerup       Fax...: +45 4486 5556
                   Denmark             http://www.mips.com

Index: arch/mips64/lib/memcpy.S
===================================================================
RCS file: /cvs/linux/arch/mips64/lib/memcpy.S,v
retrieving revision 1.9.2.1
diff -u -r1.9.2.1 memcpy.S
--- arch/mips64/lib/memcpy.S	2002/08/05 23:53:36	1.9.2.1
+++ arch/mips64/lib/memcpy.S	2002/08/08 13:19:10
@@ -762,8 +762,18 @@
 	dsubu	a2, AT, ta0			# a2 bytes to go
 	daddu	a0, ta0				# compute start address in a1
 	dsubu	a0, a1
-	j	__bzero
-	 move	a1, zero
+	/*
+	 * Clear len bytes starting at dst.  Can't call __bzero because it
+	 * might modify len.  An inefficient loop for these rare times...
+	 */
+	beqz	a2, 2f
+	 dsubu	a1, a2, 1
+1:	sb	zero, 0(a0)
+	daddu	a0, a0, 1
+	bnez	a1, 1b
+	 dsubu	a1, a1, 1
+2:	jr	ra
+	 nop
 
 s_fixup:
 	jr	ra

---

From: "Maciej W. Rozycki" <[email-masked]>
Date: Thu, 8 Aug 2002 17:08:07 +0200 (MET DST)

> The following patch take care of the problem.

 Hmm, how about simply cloning arch/mips/lib/memcpy.S?  It seems:

1. Designed to work on mips64 as well.

2. More up to date.

And it would ease maintenance. 

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: [email-masked], PGP key available        +

---

From: Ralf Baechle <[email-masked]>
Date: Thu, 8 Aug 2002 17:42:46 +0200

> And it would ease maintenance. 

Right but Carsten's patch is already ready, so I'm going to use it
for now.

  Ralf

---

From: Carsten Langgaard <[email-masked]>
Date: Thu, 08 Aug 2002 22:05:23 +0200

> And it would ease maintenance.

If it works then it's the right thing to do, so please go a head :-)

---

From: "Maciej W. Rozycki" <[email-masked]>
Date: Fri, 9 Aug 2002 10:41:30 +0200 (MET DST)

> If it works then it's the right thing to do, so please go a head :-)

 I'll do that later, but don't hesitate to do it yourself if you have some
time to spare.  The most effort will likely be in testing.