summaryrefslogtreecommitdiff
path: root/arch/um/kernel/tt/uaccess_user.c
diff options
context:
space:
mode:
authorAnton Altaparmakov <aia21@cantab.net>2005-09-26 10:50:29 +0100
committerAnton Altaparmakov <aia21@cantab.net>2005-09-26 10:50:29 +0100
commite8c2cd99a3933d93413910bc93cbd5b53177110b (patch)
treeea4c1d63b1bdeb9ef1aacacad0ac9c7dc0768fdc /arch/um/kernel/tt/uaccess_user.c
parent5a8c0cc32bb6e029cd9c36f655c6b0955b0d9967 (diff)
parent8ddec7460d2f5db3ac35812c03676b1473d1d668 (diff)
Merge branch 'master' of /home/src/linux-2.6/
Diffstat (limited to 'arch/um/kernel/tt/uaccess_user.c')
-rw-r--r--arch/um/kernel/tt/uaccess_user.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/um/kernel/tt/uaccess_user.c b/arch/um/kernel/tt/uaccess_user.c
index f01475512ecb..8c220f054b61 100644
--- a/arch/um/kernel/tt/uaccess_user.c
+++ b/arch/um/kernel/tt/uaccess_user.c
@@ -22,8 +22,15 @@ int __do_copy_from_user(void *to, const void *from, int n,
__do_copy, &faulted);
TASK_REGS(get_current())->tt = save;
- if(!faulted) return(0);
- else return(n - (fault - (unsigned long) from));
+ if(!faulted)
+ return 0;
+ else if (fault)
+ return n - (fault - (unsigned long) from);
+ else
+ /* In case of a general protection fault, we don't have the
+ * fault address, so NULL is used instead. Pretend we didn't
+ * copy anything. */
+ return n;
}
static void __do_strncpy(void *dst, const void *src, int count)