Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 26 Jan 2009 17:47:43 +0000 (09:47 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 26 Jan 2009 17:47:43 +0000 (09:47 -0800)
* 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  hrtimers: fix inconsistent lock state on resume in hres_timers_resume
  time-sched.c: tick_nohz_update_jiffies should be static
  locking, hpet: annotate false positive warning
  kernel/fork.c: unused variable 'ret'
  itimers: remove the per-cpu-ish-ness

1  2 
kernel/fork.c
kernel/hrtimer.c

diff --combined kernel/fork.c
index bf0cef8bbdf2410058e51e4bf689e49d83362fa2,81da4aae85cbba799abc74261bd5876d89bcd13e..242a706e77218073f74b9b8aa44ca589aaa1cbf4
@@@ -817,17 -817,17 +817,17 @@@ static void posix_cpu_timers_init_group
  static int copy_signal(unsigned long clone_flags, struct task_struct *tsk)
  {
        struct signal_struct *sig;
-       int ret;
  
        if (clone_flags & CLONE_THREAD) {
-               ret = thread_group_cputime_clone_thread(current);
-               if (likely(!ret)) {
-                       atomic_inc(&current->signal->count);
-                       atomic_inc(&current->signal->live);
-               }
-               return ret;
+               atomic_inc(&current->signal->count);
+               atomic_inc(&current->signal->live);
+               return 0;
        }
        sig = kmem_cache_alloc(signal_cachep, GFP_KERNEL);
+       if (sig)
+               posix_cpu_timers_init_group(sig);
        tsk->signal = sig;
        if (!sig)
                return -ENOMEM;
        memcpy(sig->rlim, current->signal->rlim, sizeof sig->rlim);
        task_unlock(current->group_leader);
  
-       posix_cpu_timers_init_group(sig);
        acct_init_pacct(&sig->pacct);
  
        tty_audit_fork(sig);
@@@ -901,7 -899,7 +899,7 @@@ static void copy_flags(unsigned long cl
        clear_freeze_flag(p);
  }
  
 -asmlinkage long sys_set_tid_address(int __user *tidptr)
 +SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr)
  {
        current->clear_child_tid = tidptr;
  
@@@ -1603,7 -1601,7 +1601,7 @@@ static int unshare_fd(unsigned long uns
   * constructed. Here we are modifying the current, active,
   * task_struct.
   */
 -asmlinkage long sys_unshare(unsigned long unshare_flags)
 +SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags)
  {
        int err = 0;
        struct fs_struct *fs, *new_fs = NULL;
diff --combined kernel/hrtimer.c
index 2dc30c59c5fd63560cc5485ca0075c958f5c36e5,cb83c6d4c07c4a4af861ccd57c14d6cdd71c2f7f..f33afb0407bcdc5c6d6a21e06cd41dde40d46d84
@@@ -614,7 -614,9 +614,9 @@@ void clock_was_set(void
   */
  void hres_timers_resume(void)
  {
-       /* Retrigger the CPU local events: */
+       WARN_ONCE(!irqs_disabled(),
+                 KERN_INFO "hres_timers_resume() called with IRQs enabled!");
        retrigger_next_event(NULL);
  }
  
@@@ -1467,8 -1469,8 +1469,8 @@@ out
        return ret;
  }
  
 -asmlinkage long
 -sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp)
 +SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp,
 +              struct timespec __user *, rmtp)
  {
        struct timespec tu;