#ifndef CPUS_H #define CPUS_H #include #include "built_in.h" #include "die.h" static inline unsigned int get_number_cpus(void) { int ret = sysconf(_SC_NPROCESSORS_CONF); if (unlikely(ret <= 0)) panic("get_number_cpus error!\n"); return ret; } static inline unsigned int get_number_cpus_online(void) { int ret = sysconf(_SC_NPROCESSORS_ONLN); if (unlikely(ret <= 0)) panic("get_number_cpus_online error!\n"); return ret; } #endif /* CPUS_H */ t-next.git' title='net-next.git Git repository'/>
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2016-10-24 11:41:56 +0200
committerThomas Gleixner <tglx@linutronix.de>2016-10-25 16:27:39 +0200
commitb831275a3553c32091222ac619cfddd73a5553fb (patch)
tree83869391da1625c235e75b4584dfcff9b0b189ca /Documentation/DocBook/media
parent07d9a380680d1c0eb51ef87ff2eab5c994949e69 (diff)
timers: Plug locking race vs. timer migration
Linus noticed that lock_timer_base() lacks a READ_ONCE() for accessing the timer flags. As a consequence the compiler is allowed to reload the flags between the initial check for TIMER_MIGRATION and the following timer base computation and the spin lock of the base. While this has not been observed (yet), we need to make sure that it never happens. Fixes: 0eeda71bc30d ("timer: Replace timer base by a cpu index") Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1610241711220.4983@nanos Cc: stable@vger.kernel.org Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org>
Diffstat (limited to 'Documentation/DocBook/media')