All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cong Wang <xiyou.wangcong@gmail.com>
To: netdev@vger.kernel.org
Cc: bpf@vger.kernel.org, jiang.wang@bytedance.com,
	duanxiongchun@bytedance.com, wangdongdong.6@bytedance.com,
	Cong Wang <cong.wang@bytedance.com>,
	John Fastabend <john.fastabend@gmail.com>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Jakub Sitnicki <jakub@cloudflare.com>,
	Lorenz Bauer <lmb@cloudflare.com>
Subject: [Patch bpf-next v4 05/12] af_unix: prepare for sockmap support
Date: Sat,  8 May 2021 15:08:28 -0700	[thread overview]
Message-ID: <20210508220835.53801-6-xiyou.wangcong@gmail.com> (raw)
In-Reply-To: <20210508220835.53801-1-xiyou.wangcong@gmail.com>

From: Cong Wang <cong.wang@bytedance.com>

Unlike af_inet, unix_proto is very different, it does not even have
a ->close() or ->unhash(). We have to add some dummy implementations
to satisfy sockmap. Normally they are just nops, they are only used
for the sockmap replacements.

Cc: John Fastabend <john.fastabend@gmail.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Jakub Sitnicki <jakub@cloudflare.com>
Cc: Lorenz Bauer <lmb@cloudflare.com>
Signed-off-by: Cong Wang <cong.wang@bytedance.com>
---
 net/unix/af_unix.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index e08918c45892..0f9a6dcca752 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -487,6 +487,8 @@ static void unix_dgram_disconnected(struct sock *sk, struct sock *other)
 			other->sk_error_report(other);
 		}
 	}
+	sk->sk_prot->unhash(sk);
+	other->sk_prot->unhash(other);
 	sk->sk_state = other->sk_state = TCP_CLOSE;
 }
 
@@ -773,10 +775,23 @@ static const struct proto_ops unix_seqpacket_ops = {
 	.show_fdinfo =	unix_show_fdinfo,
 };
 
+/* Nothing to do here, unix socket is not unhashed when disconnecting,
+ * and does not need a ->close(). These are merely for sockmap.
+ */
+static void unix_unhash(struct sock *sk)
+{
+}
+
+static void unix_close(struct sock *sk, long timeout)
+{
+}
+
 static struct proto unix_proto = {
 	.name			= "UNIX",
 	.owner			= THIS_MODULE,
 	.obj_size		= sizeof(struct unix_sock),
+	.unhash			= unix_unhash,
+	.close			= unix_close,
 };
 
 static struct sock *unix_create1(struct net *net, struct socket *sock, int kern)
@@ -860,6 +875,7 @@ static int unix_release(struct socket *sock)
 	if (!sk)
 		return 0;
 
+	sk->sk_prot->close(sk, 0);
 	unix_release_sock(sk, 0);
 	sock->sk = NULL;
 
-- 
2.25.1


  parent reply	other threads:[~2021-05-08 22:09 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-08 22:08 [Patch bpf-next v4 00/12] sockmap: add sockmap support for unix datagram socket Cong Wang
2021-05-08 22:08 ` [Patch bpf-next v4 01/12] sock_map: relax config dependency to CONFIG_NET Cong Wang
2021-05-08 22:08 ` [Patch bpf-next v4 02/12] af_unix: implement ->read_sock() for sockmap Cong Wang
2021-05-18  4:51   ` Cong Wang
2021-05-08 22:08 ` [Patch bpf-next v4 03/12] af_unix: set TCP_ESTABLISHED for datagram sockets too Cong Wang
2021-05-08 22:08 ` [Patch bpf-next v4 04/12] sock_map: export symbols for af_unix module Cong Wang
2021-05-08 22:08 ` Cong Wang [this message]
2021-05-08 22:08 ` [Patch bpf-next v4 06/12] af_unix: implement ->psock_update_sk_prot() Cong Wang
2021-05-08 22:08 ` [Patch bpf-next v4 07/12] af_unix: implement unix_dgram_bpf_recvmsg() Cong Wang
2021-05-08 22:08 ` [Patch bpf-next v4 08/12] sock_map: update sock type checks for AF_UNIX Cong Wang
2021-05-08 22:08 ` [Patch bpf-next v4 09/12] selftests/bpf: factor out udp_socketpair() Cong Wang
2021-05-08 22:08 ` [Patch bpf-next v4 10/12] selftests/bpf: factor out add_to_sockmap() Cong Wang
2021-05-08 22:08 ` [Patch bpf-next v4 11/12] selftests/bpf: add a test case for unix sockmap Cong Wang
2021-05-08 22:08 ` [Patch bpf-next v4 12/12] selftests/bpf: add test cases for redirection between udp and unix Cong Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210508220835.53801-6-xiyou.wangcong@gmail.com \
    --to=xiyou.wangcong@gmail.com \
    --cc=bpf@vger.kernel.org \
    --cc=cong.wang@bytedance.com \
    --cc=daniel@iogearbox.net \
    --cc=duanxiongchun@bytedance.com \
    --cc=jakub@cloudflare.com \
    --cc=jiang.wang@bytedance.com \
    --cc=john.fastabend@gmail.com \
    --cc=lmb@cloudflare.com \
    --cc=netdev@vger.kernel.org \
    --cc=wangdongdong.6@bytedance.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.