Date: Sat, 4 Aug 2012 05:38:26 +0000 (UTC) From: Andrew Turner <andrew@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r239033 - head/sys/arm/arm Message-ID: <201208040538.q745cQDP014914@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: andrew Date: Sat Aug 4 05:38:25 2012 New Revision: 239033 URL: http://svn.freebsd.org/changeset/base/239033 Log: Correctly return EFAULT in copyin & copyout on a fault. This fixes NFS when running FreeBSD on QEMU emulating a Gumstix board. While here remove the use of a magic number in the not-XScale version. Pointed out by: kib Reviewed by: stas Modified: head/sys/arm/arm/bcopyinout.S head/sys/arm/arm/bcopyinout_xscale.S Modified: head/sys/arm/arm/bcopyinout.S ============================================================================== --- head/sys/arm/arm/bcopyinout.S Sat Aug 4 05:31:26 2012 (r239032) +++ head/sys/arm/arm/bcopyinout.S Sat Aug 4 05:38:25 2012 (r239033) @@ -39,6 +39,7 @@ #include "assym.s" #include <machine/asm.h> +#include <sys/errno.h> .L_arm_memcpy: .word _C_LABEL(_arm_memcpy) @@ -310,7 +311,7 @@ ENTRY(copyin) RET .Lcopyfault: - mov r0, #14 /* EFAULT */ + ldr r0, =EFAULT str r5, [r4, #PCB_ONFAULT] RESTORE_REGS Modified: head/sys/arm/arm/bcopyinout_xscale.S ============================================================================== --- head/sys/arm/arm/bcopyinout_xscale.S Sat Aug 4 05:31:26 2012 (r239032) +++ head/sys/arm/arm/bcopyinout_xscale.S Sat Aug 4 05:38:25 2012 (r239033) @@ -108,6 +108,7 @@ ENTRY(copyin) ldmfd sp!, {r10-r11, pc} .Lcopyin_fault: + ldr r0, =EFAULT str r11, [r10, #PCB_ONFAULT] cmp r3, #0x00 ldmgtfd sp!, {r4-r7} /* r3 > 0 Restore r4-r7 */ @@ -559,6 +560,7 @@ ENTRY(copyout) ldmfd sp!, {r10-r11, pc} .Lcopyout_fault: + ldr r0, =EFAULT str r11, [r10, #PCB_ONFAULT] cmp r3, #0x00 ldmgtfd sp!, {r4-r7} /* r3 > 0 Restore r4-r7 */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201208040538.q745cQDP014914>