af_unix: Add a dummy ->close() for sockmap
Unlike af_inet, unix_proto is very different, it does not even have a ->close(). We have to add a dummy implementation to satisfy sockmap. Normally it is just a nop, it is introduced only for sockmap to replace it. Signed-off-by: Cong Wang <cong.wang@bytedance.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/bpf/20210704190252.11866-6-xiyou.wangcong@gmail.com
This commit is contained in:
parent
83301b5367
commit
c7272e15f0
@ -781,10 +781,18 @@ static const struct proto_ops unix_seqpacket_ops = {
|
|||||||
.show_fdinfo = unix_show_fdinfo,
|
.show_fdinfo = unix_show_fdinfo,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void unix_close(struct sock *sk, long timeout)
|
||||||
|
{
|
||||||
|
/* Nothing to do here, unix socket does not need a ->close().
|
||||||
|
* This is merely for sockmap.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
static struct proto unix_proto = {
|
static struct proto unix_proto = {
|
||||||
.name = "UNIX",
|
.name = "UNIX",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.obj_size = sizeof(struct unix_sock),
|
.obj_size = sizeof(struct unix_sock),
|
||||||
|
.close = unix_close,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct sock *unix_create1(struct net *net, struct socket *sock, int kern)
|
static struct sock *unix_create1(struct net *net, struct socket *sock, int kern)
|
||||||
@ -868,6 +876,7 @@ static int unix_release(struct socket *sock)
|
|||||||
if (!sk)
|
if (!sk)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
sk->sk_prot->close(sk, 0);
|
||||||
unix_release_sock(sk, 0);
|
unix_release_sock(sk, 0);
|
||||||
sock->sk = NULL;
|
sock->sk = NULL;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user