Skip to content

Commit 3557848

Browse files
committed
🐛 inode free
1 parent 6f13b29 commit 3557848

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed

src/fs/inode.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ inode_t *get_free_inode()
2929
inode_t *inode = &inode_table[i];
3030
if (inode->type == FS_TYPE_NONE)
3131
{
32+
assert(!inode->buf);
33+
assert(!inode->desc);
34+
assert(!inode->super);
35+
assert(!inode->op);
36+
assert(!inode->rxwaiter);
37+
assert(!inode->txwaiter);
3238
return inode;
3339
}
3440
}
@@ -41,6 +47,12 @@ void put_free_inode(inode_t *inode)
4147
assert(inode != inode_table);
4248
assert(inode->count == 0);
4349
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);
4456
}
4557

4658
// 获取根 inode
@@ -90,12 +102,11 @@ void iput(inode_t *inode)
90102

91103
void inode_init()
92104
{
105+
memset(inode_table, 0, sizeof(inode_table));
93106
for (size_t i = 0; i < INODE_NR; i++)
94107
{
95108
inode_t *inode = &inode_table[i];
96109
inode->dev = EOF;
97110
inode->type = FS_TYPE_NONE;
98-
inode->rxwaiter = NULL;
99-
inode->txwaiter = NULL;
100111
}
101112
}

src/fs/iso9660/iso9660.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,11 @@ static void iso_close(inode_t *inode)
361361
// 从超级块链表中移除
362362
list_remove(&inode->node);
363363

364+
inode->buf = NULL;
365+
inode->desc = NULL;
366+
inode->super = NULL;
367+
inode->op = NULL;
368+
364369
// 释放 inode 内存
365370
put_free_inode(inode);
366371
}

src/fs/minix/minix.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,11 @@ static void minix_close(inode_t *inode)
325325
// 从超级块链表中移除
326326
list_remove(&inode->node);
327327

328+
inode->buf = NULL;
329+
inode->desc = NULL;
330+
inode->super = NULL;
331+
inode->op = NULL;
332+
328333
// 释放 inode 内存
329334
put_free_inode(inode);
330335
}

src/net/socket.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ static void socket_close(inode_t *inode)
7676

7777
kfree(inode->desc);
7878

79+
inode->buf = NULL;
80+
inode->desc = NULL;
81+
inode->super = NULL;
82+
inode->op = NULL;
83+
7984
// 释放 inode
8085
put_free_inode(inode);
8186

0 commit comments

Comments
 (0)