diff --git a/fs/jffs2/malloc.c b/fs/jffs2/malloc.c
index 7348011..f27df01 100644
--- a/fs/jffs2/malloc.c
+++ b/fs/jffs2/malloc.c
@@ -7,7 +7,7 @@
  *
  * For licensing information, see the file 'LICENCE' in this directory.
  *
- * $Id: malloc.c,v 1.29 2005/07/27 14:16:53 dedekind Exp $
+ * $Id: malloc.c,v 1.30 2005/09/20 14:27:34 dedekind Exp $
  *
  */
 
@@ -97,13 +97,13 @@
 {
 	struct jffs2_full_dirent *ret;
 	ret = kmalloc(sizeof(struct jffs2_full_dirent) + namesize, GFP_KERNEL);
-	JFFS2_DBG_MEMALLOC("%p\n", ret);
+	dbg_memalloc("%p\n", ret);
 	return ret;
 }
 
 void jffs2_free_full_dirent(struct jffs2_full_dirent *x)
 {
-	JFFS2_DBG_MEMALLOC("%p\n", x);
+	dbg_memalloc("%p\n", x);
 	kfree(x);
 }
 
@@ -111,13 +111,13 @@
 {
 	struct jffs2_full_dnode *ret;
 	ret = kmem_cache_alloc(full_dnode_slab, GFP_KERNEL);
-	JFFS2_DBG_MEMALLOC("%p\n", ret);
+	dbg_memalloc("%p\n", ret);
 	return ret;
 }
 
 void jffs2_free_full_dnode(struct jffs2_full_dnode *x)
 {
-	JFFS2_DBG_MEMALLOC("%p\n", x);
+	dbg_memalloc("%p\n", x);
 	kmem_cache_free(full_dnode_slab, x);
 }
 
@@ -125,13 +125,13 @@
 {
 	struct jffs2_raw_dirent *ret;
 	ret = kmem_cache_alloc(raw_dirent_slab, GFP_KERNEL);
-	JFFS2_DBG_MEMALLOC("%p\n", ret);
+	dbg_memalloc("%p\n", ret);
 	return ret;
 }
 
 void jffs2_free_raw_dirent(struct jffs2_raw_dirent *x)
 {
-	JFFS2_DBG_MEMALLOC("%p\n", x);
+	dbg_memalloc("%p\n", x);
 	kmem_cache_free(raw_dirent_slab, x);
 }
 
@@ -139,13 +139,13 @@
 {
 	struct jffs2_raw_inode *ret;
 	ret = kmem_cache_alloc(raw_inode_slab, GFP_KERNEL);
-	JFFS2_DBG_MEMALLOC("%p\n", ret);
+	dbg_memalloc("%p\n", ret);
 	return ret;
 }
 
 void jffs2_free_raw_inode(struct jffs2_raw_inode *x)
 {
-	JFFS2_DBG_MEMALLOC("%p\n", x);
+	dbg_memalloc("%p\n", x);
 	kmem_cache_free(raw_inode_slab, x);
 }
 
@@ -153,14 +153,14 @@
 {
 	struct jffs2_tmp_dnode_info *ret;
 	ret = kmem_cache_alloc(tmp_dnode_info_slab, GFP_KERNEL);
-	JFFS2_DBG_MEMALLOC("%p\n",
+	dbg_memalloc("%p\n",
 		ret);
 	return ret;
 }
 
 void jffs2_free_tmp_dnode_info(struct jffs2_tmp_dnode_info *x)
 {
-	JFFS2_DBG_MEMALLOC("%p\n", x);
+	dbg_memalloc("%p\n", x);
 	kmem_cache_free(tmp_dnode_info_slab, x);
 }
 
@@ -168,13 +168,13 @@
 {
 	struct jffs2_raw_node_ref *ret;
 	ret = kmem_cache_alloc(raw_node_ref_slab, GFP_KERNEL);
-	JFFS2_DBG_MEMALLOC("%p\n", ret);
+	dbg_memalloc("%p\n", ret);
 	return ret;
 }
 
 void jffs2_free_raw_node_ref(struct jffs2_raw_node_ref *x)
 {
-	JFFS2_DBG_MEMALLOC("%p\n", x);
+	dbg_memalloc("%p\n", x);
 	kmem_cache_free(raw_node_ref_slab, x);
 }
 
@@ -182,13 +182,13 @@
 {
 	struct jffs2_node_frag *ret;
 	ret = kmem_cache_alloc(node_frag_slab, GFP_KERNEL);
-	JFFS2_DBG_MEMALLOC("%p\n", ret);
+	dbg_memalloc("%p\n", ret);
 	return ret;
 }
 
 void jffs2_free_node_frag(struct jffs2_node_frag *x)
 {
-	JFFS2_DBG_MEMALLOC("%p\n", x);
+	dbg_memalloc("%p\n", x);
 	kmem_cache_free(node_frag_slab, x);
 }
 
@@ -196,12 +196,12 @@
 {
 	struct jffs2_inode_cache *ret;
 	ret = kmem_cache_alloc(inode_cache_slab, GFP_KERNEL);
-	JFFS2_DBG_MEMALLOC("%p\n", ret);
+	dbg_memalloc("%p\n", ret);
 	return ret;
 }
 
 void jffs2_free_inode_cache(struct jffs2_inode_cache *x)
 {
-	JFFS2_DBG_MEMALLOC("%p\n", x);
+	dbg_memalloc("%p\n", x);
 	kmem_cache_free(inode_cache_slab, x);
 }
