extern void lockdep_reset_lock(struct lockdep_map *lock);
 extern void lockdep_free_key_range(void *start, unsigned long size);
 extern asmlinkage void lockdep_sys_exit(void);
+extern void lockdep_set_selftest_task(struct task_struct *task);
 
 extern void lockdep_off(void);
 extern void lockdep_on(void);
 {
 }
 
+static inline void lockdep_set_selftest_task(struct task_struct *task)
+{
+}
+
 # define lock_acquire(l, s, t, r, c, n, i)     do { } while (0)
 # define lock_release(l, n, i)                 do { } while (0)
 # define lock_downgrade(l, i)                  do { } while (0)
 
  * code to recurse back into the lockdep code...
  */
 static arch_spinlock_t lockdep_lock = (arch_spinlock_t)__ARCH_SPIN_LOCK_UNLOCKED;
+static struct task_struct *lockdep_selftest_task_struct;
 
 static int graph_lock(void)
 {
 }
 EXPORT_SYMBOL(lockdep_on);
 
+void lockdep_set_selftest_task(struct task_struct *task)
+{
+       lockdep_selftest_task_struct = task;
+}
+
 /*
  * Debugging switches:
  */
 
 
        init_shared_classes();
        debug_locks_silent = !debug_locks_verbose;
+       lockdep_set_selftest_task(current);
 
        DO_TESTCASE_6R("A-A deadlock", AA);
        DO_TESTCASE_6R("A-B-B-A deadlock", ABBA);
                printk("---------------------------------\n");
                debug_locks = 1;
        }
+       lockdep_set_selftest_task(NULL);
        debug_locks_silent = 0;
 }