X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=fs%2Fcompat.c;h=ce982f6e8c80270be3fd23f8f9553c486626986e;hb=ee731f4f7880b09ca147008ab46ad4e5f72cb8bf;hp=e31e9cf966475dd27b1aa206437b4330e80a0d70;hpb=ba262e4a4d4c23b5e6c15dbb3a99696b562e8035;p=mv-sheeva.git diff --git a/fs/compat.c b/fs/compat.c index e31e9cf9664..ce982f6e8c8 100644 --- a/fs/compat.c +++ b/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) {