]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
dtrace: fix preemption checks
authorKris Van Hees <kris.van.hees@oracle.com>
Sat, 17 Dec 2016 23:08:44 +0000 (18:08 -0500)
committerKris Van Hees <kris.van.hees@oracle.com>
Sat, 24 Dec 2016 06:27:10 +0000 (01:27 -0500)
The macros to verify whether the current execution can be preempted
were wrong.  This commit fixes that.  It also ensures that we call the
functions (or macros) provided for enabling/disabling preemption by
the kernel itself.

Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
dtrace/include/dtrace/dtrace_impl_defines.h

index 54d5b2518a9cf36fbf8bd1bf254b0e9231e0b2c1..443df6bffc85c7f941adee9cfc20d8bd7c72432a 100644 (file)
@@ -184,19 +184,13 @@ typedef enum dtrace_speculation_state {
 #define MUTEX_HELD(lock)       mutex_owned(lock)
 
 #ifdef CONFIG_PREEMPT_VOLUNTARY
-# define dtrace_is_preemptive()        (preempt_count() > 0)
-# define dtrace_preempt_off()  do {                                          \
-                                       preempt_count_inc();                  \
-                                       barrier();                            \
-                               } while (0)
-# define dtrace_preempt_on()   do {                                          \
-                                       preempt_count_dec();                  \
-                                       barrier();                            \
-                               } while (0)
+# define dtrace_is_preemptive()        (preempt_count() == 0)
+# define dtrace_preempt_off()  preempt_disable()
+# define dtrace_preempt_on()   preempt_enable()
 #endif
 
 #ifdef CONFIG_PREEMPT
-# define dtrace_is_preemptive()        (preempt_count() > 0)
+# define dtrace_is_preemptive()        (preempt_count() == 0)
 # define dtrace_preempt_off()  preempt_disable()
 # define dtrace_preempt_on()   preempt_enable_no_resched()
 #endif