]> Pileus Git - ~andy/linux/blobdiff - kernel/rcupdate.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
[~andy/linux] / kernel / rcupdate.c
index cce6ba8bbace7f0793d008c725c9599a5ba8c1d1..33eb4620aa1716c9010432ef0a63db53afbcf82e 100644 (file)
@@ -211,43 +211,6 @@ static inline void debug_rcu_head_free(struct rcu_head *head)
        debug_object_free(head, &rcuhead_debug_descr);
 }
 
-/*
- * fixup_init is called when:
- * - an active object is initialized
- */
-static int rcuhead_fixup_init(void *addr, enum debug_obj_state state)
-{
-       struct rcu_head *head = addr;
-
-       switch (state) {
-       case ODEBUG_STATE_ACTIVE:
-               /*
-                * Ensure that queued callbacks are all executed.
-                * If we detect that we are nested in a RCU read-side critical
-                * section, we should simply fail, otherwise we would deadlock.
-                * In !PREEMPT configurations, there is no way to tell if we are
-                * in a RCU read-side critical section or not, so we never
-                * attempt any fixup and just print a warning.
-                */
-#ifndef CONFIG_PREEMPT
-               WARN_ON_ONCE(1);
-               return 0;
-#endif
-               if (rcu_preempt_depth() != 0 || preempt_count() != 0 ||
-                   irqs_disabled()) {
-                       WARN_ON_ONCE(1);
-                       return 0;
-               }
-               rcu_barrier();
-               rcu_barrier_sched();
-               rcu_barrier_bh();
-               debug_object_init(head, &rcuhead_debug_descr);
-               return 1;
-       default:
-               return 0;
-       }
-}
-
 /*
  * fixup_activate is called when:
  * - an active object is activated
@@ -268,69 +231,8 @@ static int rcuhead_fixup_activate(void *addr, enum debug_obj_state state)
                debug_object_init(head, &rcuhead_debug_descr);
                debug_object_activate(head, &rcuhead_debug_descr);
                return 0;
-
-       case ODEBUG_STATE_ACTIVE:
-               /*
-                * Ensure that queued callbacks are all executed.
-                * If we detect that we are nested in a RCU read-side critical
-                * section, we should simply fail, otherwise we would deadlock.
-                * In !PREEMPT configurations, there is no way to tell if we are
-                * in a RCU read-side critical section or not, so we never
-                * attempt any fixup and just print a warning.
-                */
-#ifndef CONFIG_PREEMPT
-               WARN_ON_ONCE(1);
-               return 0;
-#endif
-               if (rcu_preempt_depth() != 0 || preempt_count() != 0 ||
-                   irqs_disabled()) {
-                       WARN_ON_ONCE(1);
-                       return 0;
-               }
-               rcu_barrier();
-               rcu_barrier_sched();
-               rcu_barrier_bh();
-               debug_object_activate(head, &rcuhead_debug_descr);
-               return 1;
        default:
-               return 0;
-       }
-}
-
-/*
- * fixup_free is called when:
- * - an active object is freed
- */
-static int rcuhead_fixup_free(void *addr, enum debug_obj_state state)
-{
-       struct rcu_head *head = addr;
-
-       switch (state) {
-       case ODEBUG_STATE_ACTIVE:
-               /*
-                * Ensure that queued callbacks are all executed.
-                * If we detect that we are nested in a RCU read-side critical
-                * section, we should simply fail, otherwise we would deadlock.
-                * In !PREEMPT configurations, there is no way to tell if we are
-                * in a RCU read-side critical section or not, so we never
-                * attempt any fixup and just print a warning.
-                */
-#ifndef CONFIG_PREEMPT
-               WARN_ON_ONCE(1);
-               return 0;
-#endif
-               if (rcu_preempt_depth() != 0 || preempt_count() != 0 ||
-                   irqs_disabled()) {
-                       WARN_ON_ONCE(1);
-                       return 0;
-               }
-               rcu_barrier();
-               rcu_barrier_sched();
-               rcu_barrier_bh();
-               debug_object_free(head, &rcuhead_debug_descr);
                return 1;
-       default:
-               return 0;
        }
 }
 
@@ -369,15 +271,13 @@ EXPORT_SYMBOL_GPL(destroy_rcu_head_on_stack);
 
 struct debug_obj_descr rcuhead_debug_descr = {
        .name = "rcu_head",
-       .fixup_init = rcuhead_fixup_init,
        .fixup_activate = rcuhead_fixup_activate,
-       .fixup_free = rcuhead_fixup_free,
 };
 EXPORT_SYMBOL_GPL(rcuhead_debug_descr);
 #endif /* #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD */
 
 #if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) || defined(CONFIG_RCU_TRACE)
-void do_trace_rcu_torture_read(char *rcutorturename, struct rcu_head *rhp,
+void do_trace_rcu_torture_read(const char *rcutorturename, struct rcu_head *rhp,
                               unsigned long secs,
                               unsigned long c_old, unsigned long c)
 {