From e30d2decc02da37e9718740a042decc4fdb1f084 Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Tue, 26 Sep 2006 10:52:39 +0200 Subject: [PATCH] --- yaml --- r: 35949 b: refs/heads/master c: 758333458aa719bfc26ec16eafd4ad3a9e96014d h: refs/heads/master i: 35947: 0d62eeaab5ea5d6e9bd4c371fff71ce5e0e4228a v: v3 --- [refs] | 2 +- trunk/fs/compat.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index b840203c137f..44526a039b0d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 95912008ba1fb9d0677c1ce5930aeb0e85ba5710 +refs/heads/master: 758333458aa719bfc26ec16eafd4ad3a9e96014d diff --git a/trunk/fs/compat.c b/trunk/fs/compat.c index e31e9cf96647..ce982f6e8c80 100644 --- a/trunk/fs/compat.c +++ b/trunk/fs/compat.c @@ -1855,7 +1855,7 @@ asmlinkage long compat_sys_pselect7(int n, compat_ulong_t __user *inp, } while (!ret && !timeout && tsp && (ts.tv_sec || ts.tv_nsec)); - if (tsp && !(current->personality & STICKY_TIMEOUTS)) { + if (ret == 0 && tsp && !(current->personality & STICKY_TIMEOUTS)) { struct compat_timespec rts; rts.tv_sec = timeout / HZ; @@ -1866,7 +1866,8 @@ asmlinkage long compat_sys_pselect7(int n, compat_ulong_t __user *inp, } if (compat_timespec_compare(&rts, &ts) >= 0) rts = ts; - copy_to_user(tsp, &rts, sizeof(rts)); + if (copy_to_user(tsp, &rts, sizeof(rts))) + ret = -EFAULT; } if (ret == -ERESTARTNOHAND) {