diff --git a/kernel/mutex-debug.c b/kernel/mutex-debug.c
index e38e4ba..fe0e9f2 100644
--- a/kernel/mutex-debug.c
+++ b/kernel/mutex-debug.c
@@ -373,7 +373,7 @@
 			   struct thread_info *new_owner __IP_DECL__)
 {
 	lock->owner = new_owner;
-	DEBUG_WARN_ON(!list_empty(&lock->held_list));
+	DEBUG_LOCKS_WARN_ON(!list_empty(&lock->held_list));
 	if (debug_mutex_on) {
 		list_add_tail(&lock->held_list, &debug_mutex_held_locks);
 		lock->acquire_ip = ip;
@@ -389,22 +389,22 @@
 
 void debug_mutex_wake_waiter(struct mutex *lock, struct mutex_waiter *waiter)
 {
-	SMP_DEBUG_WARN_ON(!spin_is_locked(&lock->wait_lock));
-	DEBUG_WARN_ON(list_empty(&lock->wait_list));
-	DEBUG_WARN_ON(waiter->magic != waiter);
-	DEBUG_WARN_ON(list_empty(&waiter->list));
+	SMP_DEBUG_LOCKS_WARN_ON(!spin_is_locked(&lock->wait_lock));
+	DEBUG_LOCKS_WARN_ON(list_empty(&lock->wait_list));
+	DEBUG_LOCKS_WARN_ON(waiter->magic != waiter);
+	DEBUG_LOCKS_WARN_ON(list_empty(&waiter->list));
 }
 
 void debug_mutex_free_waiter(struct mutex_waiter *waiter)
 {
-	DEBUG_WARN_ON(!list_empty(&waiter->list));
+	DEBUG_LOCKS_WARN_ON(!list_empty(&waiter->list));
 	memset(waiter, MUTEX_DEBUG_FREE, sizeof(*waiter));
 }
 
 void debug_mutex_add_waiter(struct mutex *lock, struct mutex_waiter *waiter,
 			    struct thread_info *ti __IP_DECL__)
 {
-	SMP_DEBUG_WARN_ON(!spin_is_locked(&lock->wait_lock));
+	SMP_DEBUG_LOCKS_WARN_ON(!spin_is_locked(&lock->wait_lock));
 	check_deadlock(lock, 0, ti, ip);
 	/* Mark the current thread as blocked on the lock: */
 	ti->task->blocked_on = waiter;
@@ -414,9 +414,9 @@
 void mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
 			 struct thread_info *ti)
 {
-	DEBUG_WARN_ON(list_empty(&waiter->list));
-	DEBUG_WARN_ON(waiter->task != ti->task);
-	DEBUG_WARN_ON(ti->task->blocked_on != waiter);
+	DEBUG_LOCKS_WARN_ON(list_empty(&waiter->list));
+	DEBUG_LOCKS_WARN_ON(waiter->task != ti->task);
+	DEBUG_LOCKS_WARN_ON(ti->task->blocked_on != waiter);
 	ti->task->blocked_on = NULL;
 
 	list_del_init(&waiter->list);
@@ -425,11 +425,11 @@
 
 void debug_mutex_unlock(struct mutex *lock)
 {
-	DEBUG_WARN_ON(lock->magic != lock);
-	DEBUG_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
-	DEBUG_WARN_ON(lock->owner != current_thread_info());
+	DEBUG_LOCKS_WARN_ON(lock->magic != lock);
+	DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next);
+	DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info());
 	if (debug_mutex_on) {
-		DEBUG_WARN_ON(list_empty(&lock->held_list));
+		DEBUG_LOCKS_WARN_ON(list_empty(&lock->held_list));
 		list_del_init(&lock->held_list);
 	}
 }
@@ -456,7 +456,7 @@
  */
 void fastcall mutex_destroy(struct mutex *lock)
 {
-	DEBUG_WARN_ON(mutex_is_locked(lock));
+	DEBUG_LOCKS_WARN_ON(mutex_is_locked(lock));
 	lock->magic = NULL;
 }
 
diff --git a/kernel/mutex-debug.h b/kernel/mutex-debug.h
index a5196c3..8417b52 100644
--- a/kernel/mutex-debug.h
+++ b/kernel/mutex-debug.h
@@ -65,10 +65,10 @@
 	do {						\
 		struct mutex *l = container_of(lock, struct mutex, wait_lock); \
 							\
-		DEBUG_WARN_ON(in_interrupt());		\
+		DEBUG_LOCKS_WARN_ON(in_interrupt());	\
 		debug_spin_lock_save(&debug_mutex_lock, flags); \
 		spin_lock(lock);			\
-		DEBUG_WARN_ON(l->magic != l);		\
+		DEBUG_LOCKS_WARN_ON(l->magic != l);	\
 	} while (0)
 
 #define spin_unlock_mutex(lock, flags)			\
@@ -95,7 +95,7 @@
 	}						\
 } while (0)
 
-#define DEBUG_WARN_ON(c)				\
+#define DEBUG_LOCKS_WARN_ON(c)				\
 do {							\
 	if (unlikely(c && debug_mutex_on)) {		\
 		DEBUG_OFF();				\
@@ -110,10 +110,10 @@
 } while (0)
 
 #ifdef CONFIG_SMP
-# define SMP_DEBUG_WARN_ON(c)			DEBUG_WARN_ON(c)
-# define SMP_DEBUG_BUG_ON(c)			DEBUG_BUG_ON(c)
+# define SMP_DEBUG_LOCKS_WARN_ON(c)			DEBUG_LOCKS_WARN_ON(c)
+# define SMP_DEBUG_BUG_ON(c)				DEBUG_BUG_ON(c)
 #else
-# define SMP_DEBUG_WARN_ON(c)			do { } while (0)
-# define SMP_DEBUG_BUG_ON(c)			do { } while (0)
+# define SMP_DEBUG_LOCKS_WARN_ON(c)			do { } while (0)
+# define SMP_DEBUG_BUG_ON(c)				do { } while (0)
 #endif
 
diff --git a/kernel/mutex.c b/kernel/mutex.c
index 7043db2..101ceeb 100644
--- a/kernel/mutex.c
+++ b/kernel/mutex.c
@@ -183,8 +183,8 @@
 
 	debug_mutex_free_waiter(&waiter);
 
-	DEBUG_WARN_ON(list_empty(&lock->held_list));
-	DEBUG_WARN_ON(lock->owner != task->thread_info);
+	DEBUG_LOCKS_WARN_ON(list_empty(&lock->held_list));
+	DEBUG_LOCKS_WARN_ON(lock->owner != task->thread_info);
 
 	return 0;
 }
@@ -206,7 +206,7 @@
 	struct mutex *lock = container_of(lock_count, struct mutex, count);
 	unsigned long flags;
 
-	DEBUG_WARN_ON(lock->owner != current_thread_info());
+	DEBUG_LOCKS_WARN_ON(lock->owner != current_thread_info());
 
 	spin_lock_mutex(&lock->wait_lock, flags);
 
diff --git a/kernel/mutex.h b/kernel/mutex.h
index 0691899..7e1ed48 100644
--- a/kernel/mutex.h
+++ b/kernel/mutex.h
@@ -16,7 +16,7 @@
 #define mutex_remove_waiter(lock, waiter, ti) \
 		__list_del((waiter)->list.prev, (waiter)->list.next)
 
-#define DEBUG_WARN_ON(c)				do { } while (0)
+#define DEBUG_LOCKS_WARN_ON(c)				do { } while (0)
 #define debug_mutex_set_owner(lock, new_owner)		do { } while (0)
 #define debug_mutex_clear_owner(lock)			do { } while (0)
 #define debug_mutex_init_waiter(waiter)			do { } while (0)
