yaffsfs.c: Fix NULL dereference in yaffs_unmount2_reldev()
[yaffs2.git] / direct / test-framework / basic-tests / reldevtest.c
1 /*
2  * YAFFS: Yet another FFS. A NAND-flash specific file system.
3  *
4  * Copyright (C) 2002-2018 Aleph One Ltd.
5  *
6  * Created by Charles Manning <charles@aleph1.co.uk>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as
10  * published by the Free Software Foundation.
11  */
12
13
14 #include <stdio.h>
15 #include <string.h>
16 #include <unistd.h>
17 #include <fcntl.h>
18 #include <time.h>
19 #include <ctype.h>
20
21
22 #include "yaffsfs.h"
23
24 #include "yaffs_guts.h" /* Only for dumping device innards */
25 #include "yaffs_endian.h" /*For testing the swap_u64 macro */
26
27 extern int yaffs_trace_mask;
28
29
30
31 int call_all_reldev(struct yaffs_dev *dev)
32 {
33         struct yaffs_stat buf;
34         struct yaffs_utimbuf utime;
35         unsigned char xbuffer[20];
36         char cbuffer[20];
37
38         yaffs_mount_reldev(dev);
39         yaffs_open_sharing_reldev(dev, "foo", 0, 0, 0);
40         yaffs_open_reldev(dev, "foo", 0, 0);
41         yaffs_truncate_reldev(dev, "foo", 99);
42         yaffs_unlink_reldev(dev, "foo");
43         yaffs_rename_reldev(dev, "foo", "foo_new");
44         yaffs_stat_reldev(dev, "foo", &buf);
45         yaffs_lstat_reldev(dev, "foo", &buf);
46         yaffs_utime_reldev(dev, "foo", &utime);
47         yaffs_setxattr_reldev(dev, "foo", "name", xbuffer, 20, 0);
48         yaffs_lsetxattr_reldev(dev, "foo", "name", xbuffer, 20, 0);
49         yaffs_getxattr_reldev(dev, "foo", "name", xbuffer, 20);
50         yaffs_lgetxattr_reldev(dev, "foo", "name", xbuffer, 20);
51
52         yaffs_listxattr_reldev(dev, "foo", cbuffer, 20);
53         yaffs_llistxattr_reldev(dev, "foo", cbuffer, 20);
54         yaffs_removexattr_reldev(dev, "foo", "name");
55         yaffs_lremovexattr_reldev(dev, "foo", "name");
56
57         yaffs_access_reldev(dev, "foo", 0);
58         yaffs_chmod_reldev(dev, "foo", 0);
59         yaffs_mkdir_reldev(dev, "foo", 0);
60         yaffs_rmdir_reldev(dev, "foo");
61
62
63         yaffs_opendir_reldev(dev, "foo");
64
65         //yaffs_symlink_reldev(dev, "foo", "foolink");
66         //yaffs_readlink_reldev(dev, "foo", cbuffer, 20);
67         //yaffs_link_reldev(dev, "foo", "foo_new");
68
69         yaffs_mknod_reldev(dev, "foo", 0, 0);
70         yaffs_freespace_reldev(dev);
71         yaffs_totalspace_reldev(dev);
72
73         yaffs_sync_reldev(dev);
74         yaffs_sync_files_reldev(dev);
75
76         yaffs_unmount_reldev(dev);
77         yaffs_unmount2_reldev(dev, 1);
78         yaffs_remount_reldev(dev, 1, 1);
79
80         return 0;
81 }
82
83
84 int random_seed;
85 int simulate_power_failure;
86
87 int main(int argc, char *argv[])
88 {
89         (void) argc;
90         (void) argv;
91
92         call_all_reldev(NULL);
93
94         return 0;
95 }