Subject: [PATCH] Make af_inet sockets bump the count of struct nethost. From: Eric W. Biederman Date: 1133650875 -0700 Because sockets can have a different lifetime than the processes that generate the struct nethost. --- net/ipv4/af_inet.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) 4931c5e9d16fece23727eb06333f328b0963407a diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index 44273ee..fb25c5c 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -304,6 +304,7 @@ lookup_protocol: err = 0; sk->sk_host = current->host; + get_host(sk->sk_host); sk->sk_no_check = answer_no_check; if (INET_PROTOSW_REUSE & answer_flags) sk->sk_reuse = 1; @@ -351,8 +352,10 @@ lookup_protocol: if (sk->sk_prot->init) { err = sk->sk_prot->init(sk); - if (err) + if (err) { + put_host(sk->sk_host); sk_common_release(sk); + } } out: return err; @@ -390,6 +393,7 @@ int inet_release(struct socket *sock) timeout = sk->sk_lingertime; sock->sk = NULL; sk->sk_prot->close(sk, timeout); + put_host(sk->sk_host); } return 0; } -- 1.0.GIT