1. 15 4月, 2017 1 次提交
  2. 02 3月, 2017 1 次提交
  3. 26 12月, 2016 2 次提交
    • T
      ktime: Cleanup ktime_set() usage · 8b0e1953
      Thomas Gleixner 提交于
      ktime_set(S,N) was required for the timespec storage type and is still
      useful for situations where a Seconds and Nanoseconds part of a time value
      needs to be converted. For anything where the Seconds argument is 0, this
      is pointless and can be replaced with a simple assignment.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      8b0e1953
    • T
      ktime: Get rid of the union · 2456e855
      Thomas Gleixner 提交于
      ktime is a union because the initial implementation stored the time in
      scalar nanoseconds on 64 bit machine and in a endianess optimized timespec
      variant for 32bit machines. The Y2038 cleanup removed the timespec variant
      and switched everything to scalar nanoseconds. The union remained, but
      become completely pointless.
      
      Get rid of the union and just keep ktime_t as simple typedef of type s64.
      
      The conversion was done with coccinelle and some manual mopping up.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      2456e855
  4. 25 12月, 2016 1 次提交
  5. 17 1月, 2016 1 次提交
  6. 22 4月, 2015 1 次提交
  7. 25 10月, 2014 1 次提交
    • M
      posix-timers: Fix stack info leak in timer_create() · 6891c450
      Mathias Krause 提交于
      If userland creates a timer without specifying a sigevent info, we'll
      create one ourself, using a stack local variable. Particularly will we
      use the timer ID as sival_int. But as sigev_value is a union containing
      a pointer and an int, that assignment will only partially initialize
      sigev_value on systems where the size of a pointer is bigger than the
      size of an int. On such systems we'll copy the uninitialized stack bytes
      from the timer_create() call to userland when the timer actually fires
      and we're going to deliver the signal.
      
      Initialize sigev_value with 0 to plug the stack info leak.
      
      Found in the PaX patch, written by the PaX Team.
      
      Fixes: 5a9fa730 ("posix-timers: kill ->it_sigev_signo and...")
      Signed-off-by: NMathias Krause <minipli@googlemail.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Brad Spengler <spender@grsecurity.net>
      Cc: PaX Team <pageexec@freemail.hu>
      Cc: <stable@vger.kernel.org>	# v2.6.28+
      Link: http://lkml.kernel.org/r/1412456799-32339-1-git-send-email-minipli@googlemail.comSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      6891c450
  8. 24 7月, 2014 1 次提交
  9. 23 6月, 2014 1 次提交
  10. 18 4月, 2013 2 次提交
    • T
      posix-timers: Remove unused variable · d2054b2c
      Thomas Gleixner 提交于
      Remove the unused variable *node introduced by commit 5ed67f05 (posix
      timers: Allocate timer id per process)
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Pavel Emelyanov <xemul@parallels.com>
      d2054b2c
    • P
      posix timers: Allocate timer id per process (v2) · 5ed67f05
      Pavel Emelyanov 提交于
      Currently kernel generates IDs for posix timers in a global manner --
      there's a kernel-wide IDR tree from which IDs are created. This makes
      it impossible to recreate a timer with a desired ID (in particular
      this is done by the CRIU checkpoint-restore project) -- since these
      IDs are global it may happen, that at the time we recreate a timer, the
      ID we want for it is already busy by some other timer.
      
      In order to address this, replace the IDR tree with a global hash
      table for timers and makes timer IDs unique per signal_struct (to
      which timers are linked anyway). With this, two timers belonging to
      different processes may have equal IDs and we can recreate either of
      them with the ID we want.
      Signed-off-by: NPavel Emelyanov <xemul@parallels.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Michael Kerrisk <mtk.manpages@gmail.com>
      Cc: Matthew Helsley <matt.helsley@gmail.com>
      Link: http://lkml.kernel.org/r/513D9FF5.9010004@parallels.comSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      5ed67f05
  11. 23 3月, 2013 2 次提交
  12. 28 2月, 2013 1 次提交
  13. 22 2月, 2013 1 次提交
    • T
      posix-timer: Don't call idr_find() with out-of-range ID · e182bb38
      Tejun Heo 提交于
      When idr_find() was fed a negative ID, it used to look up the ID
      ignoring the sign bit before recent ("idr: remove MAX_IDR_MASK and
      move left MAX_IDR_* into idr.c") patch. Now a negative ID triggers
      a WARN_ON_ONCE().
      
      __lock_timer() feeds timer_id from userland directly to idr_find()
      without sanitizing it which can trigger the above malfunctions.  Add a
      range check on @timer_id before invoking idr_find() in __lock_timer().
      
      While timer_t is defined as int by all archs at the moment, Andrew
      worries that it may be defined as a larger type later on.  Make the
      test cover larger integers too so that it at least is guaranteed to
      not return the wrong timer.
      
      Note that WARN_ON_ONCE() in idr_find() on id < 0 is transitional
      precaution while moving away from ignoring MSB.  Once it's gone we can
      remove the guard as long as timer_t isn't larger than int.
      
      Signed-off-by: Tejun Heo <tj@kernel.org>nnn
      Reported-by: NSasha Levin <sasha.levin@oracle.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: stable@vger.kernel.org
      Link: http://lkml.kernel.org/r/20130220232412.GL3570@htj.dyndns.orgSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
      e182bb38
  14. 16 1月, 2013 1 次提交
  15. 31 10月, 2011 1 次提交
  16. 24 5月, 2011 1 次提交
    • E
      posix-timers: RCU conversion · 8af08871
      Eric Dumazet 提交于
      Ben Nagy reported a scalability problem with KVM/QEMU that hit very hard
      a single spinlock (idr_lock) in posix-timers code, on its 48 core
      machine.
      
      Even on a 16 cpu machine (2x4x2), a single test can show 98% of cpu time
      used in ticket_spin_lock, from lock_timer
      
      Ref: http://www.spinics.net/lists/kvm/msg51526.html
      
      Switching to RCU is quite easy, IDR being already RCU ready. idr_lock
      should be locked only for an insert/delete, not a lookup.
      
      Benchmark on a 2x4x2 machine, 16 processes calling timer_gettime().
      
      Before :
      
      real    1m18.669s
      user    0m1.346s
      sys     1m17.180s
      
      After :
      
      real    0m3.296s
      user    0m1.366s
      sys     0m1.926s
      Reported-by: NBen Nagy <ben@iagu.net>
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Tested-by: NBen Nagy <ben@iagu.net>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Avi Kivity <avi@redhat.com>
      Cc: John Stultz <johnstul@us.ibm.com>
      Cc: Richard Cochran <richard.cochran@omicron.at>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      8af08871
  17. 23 5月, 2011 1 次提交
  18. 31 3月, 2011 1 次提交
  19. 22 2月, 2011 1 次提交
  20. 02 2月, 2011 18 次提交