Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.24.6 /kernel/futex_compat.c

Filename:/kernel/futex_compat.c
Lines Added:10
Lines Deleted:1
Also changed in: (Previous) 2.6.24.5  2.6.24.4  2.6.24.4-rc3  2.6.24.4-rc2  2.6.24.4-rc1  2.6.24.3 
(Following) 2.6.24.7 

Location
[  2.6.24.6
  [  kernel
     o  futex_compat.c

Patch

diff --git a/kernel/futex_compat.c b/kernel/futex_compat.c
index 0a43def..d95f79b 100644
--- a/kernel/futex_compat.c
+++ b/kernel/futex_compat.c
@@ -54,6 +54,9 @@ void compat_exit_robust_list(struct task_struct *curr)
    compat_long_t futex_offset;
    int rc;
 
+   if (!futex_cmpxchg_enabled)
+      return;
+
    /*
     * Fetch the list head (which was registered earlier, via
     * sys_set_robust_list()):
@@ -115,6 +118,9 @@ asmlinkage long
 compat_sys_set_robust_list(struct compat_robust_list_head __user *head,
             compat_size_t len)
 {
+   if (!futex_cmpxchg_enabled)
+      return -ENOSYS;
+
    if (unlikely(len != sizeof(*head)))
       return -EINVAL;
 
@@ -130,6 +136,9 @@ compat_sys_get_robust_list(int pid, compat_uptr_t __user *head_ptr,
    struct compat_robust_list_head __user *head;
    unsigned long ret;
 
+   if (!futex_cmpxchg_enabled)
+      return -ENOSYS;
+
    if (!pid)
       head = current->compat_robust_list;
    else {
@@ -175,7 +184,7 @@ asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val,
 
       t = timespec_to_ktime(ts);
       if (cmd == FUTEX_WAIT)
-         t = ktime_add(ktime_get(), t);
+         t = ktime_add_safe(ktime_get(), t);
       tp = &t;
    }
    if (cmd == FUTEX_REQUEUE || cmd == FUTEX_CMP_REQUEUE)


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.