File tree 4 files changed +28
-2
lines changed
4 files changed +28
-2
lines changed Original file line number Diff line number Diff line change @@ -29,6 +29,12 @@ inode_t *get_free_inode()
29
29
inode_t * inode = & inode_table [i ];
30
30
if (inode -> type == FS_TYPE_NONE )
31
31
{
32
+ assert (!inode -> buf );
33
+ assert (!inode -> desc );
34
+ assert (!inode -> super );
35
+ assert (!inode -> op );
36
+ assert (!inode -> rxwaiter );
37
+ assert (!inode -> txwaiter );
32
38
return inode ;
33
39
}
34
40
}
@@ -41,6 +47,12 @@ void put_free_inode(inode_t *inode)
41
47
assert (inode != inode_table );
42
48
assert (inode -> count == 0 );
43
49
inode -> type = FS_TYPE_NONE ;
50
+ assert (!inode -> buf );
51
+ assert (!inode -> desc );
52
+ assert (!inode -> super );
53
+ assert (!inode -> op );
54
+ assert (!inode -> rxwaiter );
55
+ assert (!inode -> txwaiter );
44
56
}
45
57
46
58
// 获取根 inode
@@ -90,12 +102,11 @@ void iput(inode_t *inode)
90
102
91
103
void inode_init ()
92
104
{
105
+ memset (inode_table , 0 , sizeof (inode_table ));
93
106
for (size_t i = 0 ; i < INODE_NR ; i ++ )
94
107
{
95
108
inode_t * inode = & inode_table [i ];
96
109
inode -> dev = EOF ;
97
110
inode -> type = FS_TYPE_NONE ;
98
- inode -> rxwaiter = NULL ;
99
- inode -> txwaiter = NULL ;
100
111
}
101
112
}
Original file line number Diff line number Diff line change @@ -361,6 +361,11 @@ static void iso_close(inode_t *inode)
361
361
// 从超级块链表中移除
362
362
list_remove (& inode -> node );
363
363
364
+ inode -> buf = NULL ;
365
+ inode -> desc = NULL ;
366
+ inode -> super = NULL ;
367
+ inode -> op = NULL ;
368
+
364
369
// 释放 inode 内存
365
370
put_free_inode (inode );
366
371
}
Original file line number Diff line number Diff line change @@ -325,6 +325,11 @@ static void minix_close(inode_t *inode)
325
325
// 从超级块链表中移除
326
326
list_remove (& inode -> node );
327
327
328
+ inode -> buf = NULL ;
329
+ inode -> desc = NULL ;
330
+ inode -> super = NULL ;
331
+ inode -> op = NULL ;
332
+
328
333
// 释放 inode 内存
329
334
put_free_inode (inode );
330
335
}
Original file line number Diff line number Diff line change @@ -76,6 +76,11 @@ static void socket_close(inode_t *inode)
76
76
77
77
kfree (inode -> desc );
78
78
79
+ inode -> buf = NULL ;
80
+ inode -> desc = NULL ;
81
+ inode -> super = NULL ;
82
+ inode -> op = NULL ;
83
+
79
84
// 释放 inode
80
85
put_free_inode (inode );
81
86
You can’t perform that action at this time.
0 commit comments