yaffsfs.c: Fix NULL dereference in yaffs_unmount2_reldev()
[yaffs2.git] / patches / yaffs_linux_allocator.c
index d0837f8696e946150dff107a90e4238179190be7..aa181fb3e969f688e7d216e939c0b23c06c5dafe 100644 (file)
@@ -1,8 +1,7 @@
 /*
  * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
  *
- * Copyright (C) 2002-2010 Aleph One Ltd.
- *   for Toby Churchill Ltd and Brightstar Engineering
+ * Copyright (C) 2002-2018 Aleph One Ltd.
  *
  * Created by Charles Manning <charles@aleph1.co.uk>
  *
@@ -42,7 +41,7 @@ typedef struct yaffs_AllocatorStruct yaffs_Allocator;
 
 int mount_id;
 
-void yaffs_deinit_raw_tnodes_and_objs(yaffs_dev_t *dev)
+void yaffs_deinit_raw_tnodes_and_objs(struct yaffs_dev *dev)
 {
        yaffs_Allocator *allocator = (yaffs_Allocator *)dev->allocator;
 
@@ -55,7 +54,7 @@ void yaffs_deinit_raw_tnodes_and_objs(yaffs_dev_t *dev)
                } else {
                        T(YAFFS_TRACE_ALWAYS,
                                (TSTR("NULL tnode cache\n")));
-                       YBUG();
+                       BUG();
                }
 
                if(allocator->object_cache){
@@ -64,15 +63,15 @@ void yaffs_deinit_raw_tnodes_and_objs(yaffs_dev_t *dev)
                } else {
                        T(YAFFS_TRACE_ALWAYS,
                                (TSTR("NULL object cache\n")));
-                       YBUG();
+                       BUG();
                }
 
-               YFREE(allocator);
+               kfree(allocator);
 
        } else {
                T(YAFFS_TRACE_ALWAYS,
                        (TSTR("Deinitialising NULL allocator\n")));
-               YBUG();
+               BUG();
        }
        dev->allocator = NULL;
 }
@@ -102,26 +101,26 @@ static void (*fake_ctor_list[10]) (void *) = {
        fake_ctor9,
 };
 
-void yaffs_init_raw_tnodes_and_objs(yaffs_dev_t *dev)
+void yaffs_init_raw_tnodes_and_objs(struct yaffs_dev *dev)
 {
        yaffs_Allocator *allocator;
-       unsigned mount_id = yaffs_dev_to_lc(dev)->mount_id;
+       unsigned mount_id = struct yaffs_devo_lc(dev)->mount_id;
 
        T(YAFFS_TRACE_ALLOCATE,(TSTR("Initialising yaffs allocator\n")));
 
        if(dev->allocator)
-               YBUG();
+               BUG();
        else if(mount_id >= 10){
                T(YAFFS_TRACE_ALWAYS,(TSTR("Bad mount_id %u\n"),mount_id));
        } else {
-                allocator = YMALLOC(sizeof(yaffs_Allocator));
+                allocator = kmalloc(sizeof(yaffs_Allocator));
                 memset(allocator,0,sizeof(yaffs_Allocator));
                 dev->allocator = allocator;
 
                if(!dev->allocator){
                        T(YAFFS_TRACE_ALWAYS,
                                (TSTR("yaffs allocator creation failed\n")));
-                       YBUG();
+                       BUG();
                        return;
 
                }
@@ -141,13 +140,13 @@ void yaffs_init_raw_tnodes_and_objs(yaffs_dev_t *dev)
                else {
                        T(YAFFS_TRACE_ALWAYS,
                                (TSTR("yaffs cache creation failed\n")));
-                       YBUG();
+                       BUG();
                }
 
 
                allocator->object_cache = 
                        kmem_cache_create(allocator->object_name,
-                               sizeof(yaffs_obj_t),
+                               sizeof(struct yaffs_obj),
                                0, 0,
                                fake_ctor_list[mount_id]);
 
@@ -159,43 +158,43 @@ void yaffs_init_raw_tnodes_and_objs(yaffs_dev_t *dev)
                else {
                        T(YAFFS_TRACE_ALWAYS,
                                (TSTR("yaffs cache creation failed\n")));
-                       YBUG();
+                       BUG();
                }
        } 
 }
 
 
-yaffs_tnode_t *yaffs_alloc_raw_tnode(yaffs_dev_t *dev)
+struct yaffs_tnode *yaffs_alloc_raw_tnode(struct yaffs_dev *dev)
 {
        yaffs_Allocator *allocator = dev->allocator;
        if(!allocator || !allocator->tnode_cache){
-               YBUG();
+               BUG();
                return NULL;
        }
        return kmem_cache_alloc(allocator->tnode_cache, GFP_NOFS);
 }
 
-void yaffs_free_raw_tnode(yaffs_dev_t *dev, yaffs_tnode_t *tn)
+void yaffs_free_raw_tnode(struct yaffs_dev *dev, struct yaffs_tnode *tn)
 {
        yaffs_Allocator *allocator = dev->allocator;
        kmem_cache_free(allocator->tnode_cache,tn);
 }
 
-yaffs_obj_t *yaffs_alloc_raw_obj(yaffs_dev_t *dev)
+struct yaffs_obj *yaffs_alloc_raw_obj(struct yaffs_dev *dev)
 {
        yaffs_Allocator *allocator = dev->allocator;
        if(!allocator){
-               YBUG();
+               BUG();
                return NULL;
        }
        if(!allocator->object_cache){
-               YBUG();
+               BUG();
                return NULL;
        }
        return kmem_cache_alloc(allocator->object_cache, GFP_NOFS);
 }
 
-void yaffs_free_raw_obj(yaffs_dev_t *dev, yaffs_obj_t *obj)
+void yaffs_free_raw_obj(struct yaffs_dev *dev, struct yaffs_obj *obj)
 {
        yaffs_Allocator *allocator = dev->allocator;
        kmem_cache_free(allocator->object_cache,obj);