alpha copy_to_user (was Re: NFS fails under 2.2.6)

Tim Waugh (tim@cyberelk.demon.co.uk)
Thu, 22 Apr 1999 08:38:52 +0100 (GMT)


The following oops happens on Alphas when the filesystem concerned is a
module (I've conformed it happens for msdos here). The problem seems to
be with the uaccess changes in 2.2.6. The following patch (which reverts
some of the 2.2.6 patch) seems to make thing better, although I don't know
Alpha asm well enough to know why:

--- include/asm-alpha/uaccess.h~ Tue Apr 20 21:02:24 1999
+++ include/asm-alpha/uaccess.h Wed Apr 21 22:09:02 1999
@@ -384,10 +384,11 @@
register const void * __cu_from __asm__("$7") = from;
register long __cu_len __asm__("$0") = len;
__asm__ __volatile__(
- "jsr $28,__copy_user"
+ "jsr $28,(%3),__copy_user"
: "=r" (__cu_len), "=r" (__cu_from), "=r" (__cu_to)
- : "0" (__cu_len), "1" (__cu_from), "2" (__cu_to)
- : "$1","$2","$3","$4","$5","$27","$28","memory");
+ : "r" (__copy_user), "0" (__cu_len),
+ "1" (__cu_from), "2" (__cu_to)
+ : "$1","$2","$3","$4","$5","$28","memory");
len = __cu_len;
}
return len;

Would any AXP asm hackers like to comment?

Tim.
*/

On Tue, 20 Apr 1999, Philipp Reisner wrote:

> [root@alf /root]# mount ns:/home /home
> [root@alf /root]# mount
> /dev/hdc2 on / type ext2 (rw)
> none on /proc type proc (rw)
> /dev/hdc6 on /mnt/bigbut type ext2 (rw)
> ns:/home on /home type nfs (rw,addr=192.168.17.226)
> [root@alf /root]# ls /home
>
> Unable to handle kernel paging request at virtual address fffffe000004cb00
> ls(376): Oops 0
> pc = [<fffffc000034b138>] ra = [<fffffe0000043f9c>] ps = 0000
> r0 = 0000000000000001 r1 = 0000000000000000 r2 = 000000011fffebbb
> r3 = 000000011fffebbb r4 = 0000000000000018 r5 = 0000000000000000
> r6 = 000000011fffebba r7 = fffffc00069bbfff r8 = fffffc0006a00000
> r9 = fffffe000004ae90 r10= 000000000000000c r11= fffffc00069ba00c
> r12= 0000000000000000 r13= fffffc00069ba000 r14= fffffc0006a249e0
> r15= 0000000000000000
> r16= fffffc0006a03ef8 r17= fffffc00069bbfff r18= 0000000000000001
> r19= 0000000000000000 r20= 0000000078006799 r21= 0000000000000000
> r22= 000000011fffeba8 r23= 0000000000000018 r24= 0000000000000018
> r25= 0000000000000000 r27= fffffc000034b050 r28= 0000000000000000
> gp = fffffe0000052ec8 sp = fffffc0006a03e58
> Code: 44220001 f4200003 46520400 <a77d9c38> 6b9b4a40 a44803a8 42425401 42c10403 40603401
>
> >>EIP: fffffc000034b138 <filldir+e8/148>
> Code: fffffc000034b12c <filldir+dc/148> 0000000000000000 <_EIP>:
> Code: fffffc000034b12c <filldir+dc/148> 0: 44 22 00 01 call_pal 0x1002244
> Code: fffffc000034b130 <filldir+e0/148> 4: f4 20 00 03 call_pal 0x30020f4
> Code: fffffc000034b134 <filldir+e4/148> 8: 46 52 04 00 call_pal 0x45246
> Code: fffffc000034b138 <filldir+e8/148> c: a7 7d 9c 38 stb t3,32167(at) <===
> Code: fffffc000034b13c <filldir+ec/148> 10: 6b 9b 4a 40 .long 0x404a9b6b
> Code: fffffc000034b140 <filldir+f0/148> 14: a4 48 03 a8 ldl_l v0,18596(t2)
> Code: fffffc000034b144 <filldir+f4/148> 18: 42 42 54 01 call_pal 0x1544242
> Code: fffffc000034b148 <filldir+f8/148> 1c: 42 c1 04 03 call_pal 0x304c142
> Code: fffffc000034b14c <filldir+fc/148> 20: 40 60 34 01 call_pal 0x1346040
>
> Trace: [<fffffc000034b270>] [<fffffc000034b050>] [<fffffc00003104dc>] [<fffffc0000310c00>]
>
> Trace: fffffc000034b270 <sys_getdents+d8/188>
> Trace: fffffc000034b050 <filldir+0/148>
> Trace: fffffc00003104dc <entMM+9c/c0>
> Trace: fffffc0000310c00 <entSys+a8/c0>
>
>
> 3 warnings issued. Results may not be reliable.
> ------------------------------------------------------------------------
> Want to try something new? Are you a Linux hacker?
> Volunteer in testing mergemem!
> (Get it from http://das.ist.org/mergemem)
> -----
> Philipp Reisner PGP: http://der.ist.org/~kde/pgp.asc
>
>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/