diff options
| author | Anton Altaparmakov <aia21@cantab.net> | 2005-09-26 10:50:29 +0100 |
|---|---|---|
| committer | Anton Altaparmakov <aia21@cantab.net> | 2005-09-26 10:50:29 +0100 |
| commit | e8c2cd99a3933d93413910bc93cbd5b53177110b (patch) | |
| tree | ea4c1d63b1bdeb9ef1aacacad0ac9c7dc0768fdc /arch/um/kernel/tt/uaccess_user.c | |
| parent | 5a8c0cc32bb6e029cd9c36f655c6b0955b0d9967 (diff) | |
| parent | 8ddec7460d2f5db3ac35812c03676b1473d1d668 (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.c | 11 |
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) |
