From 3c54a1d21179fba41b284876c39873ce37aafbbc Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Thu, 25 Feb 2016 22:42:04 +0000 Subject: [PATCH] syscall_net: Fix socket leak We now pass fsck --- Kernel/syscall_net.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Kernel/syscall_net.c b/Kernel/syscall_net.c index ee7e17d5..e3d3e8ff 100644 --- a/Kernel/syscall_net.c +++ b/Kernel/syscall_net.c @@ -123,7 +123,10 @@ void sock_close(inoptr ino) net_close(s); sock_wait_enter(s, 0, SS_CLOSED); s->s_state = SS_UNUSED; - i_deref(ino); + /* You re-use something you pays the price. Probably should switch + to using data 0 as devices do ? FIXME */ + ino->c_node.i_nlink = 0; + ino->c_flags |= CDIRTY; } /* @@ -316,7 +319,6 @@ arg_t make_socket(struct sockinfo *s, struct socket **np) /* The nlink cheat needs to be taught to fsck! */ ino->c_node.i_mode = F_SOCK | 0777; ino->c_node.i_nlink = n->s_num; /* Cheat !! */ - i_ref(ino); n->s_inode = ino; of_tab[oftindex].o_inode = ino; -- 2.34.1