public inbox for [email protected]
 help / color / mirror / Atom feed
* [PATCH v2 1/4] net: Split a __sys_bind helper for io_uring
@ 2024-06-14 16:30 Gabriel Krisman Bertazi
  2024-06-14 16:30 ` [PATCH v2 2/4] net: Split a __sys_listen " Gabriel Krisman Bertazi
                   ` (5 more replies)
  0 siblings, 6 replies; 17+ messages in thread
From: Gabriel Krisman Bertazi @ 2024-06-14 16:30 UTC (permalink / raw)
  To: axboe; +Cc: io-uring, netdev, Gabriel Krisman Bertazi

io_uring holds a reference to the file and maintains a
sockaddr_storage address.  Similarly to what was done to
__sys_connect_file, split an internal helper for __sys_bind in
preparation to supporting an io_uring bind command.

Reviewed-by: Jens Axboe <[email protected]>
Signed-off-by: Gabriel Krisman Bertazi <[email protected]>
---
 include/linux/socket.h |  2 ++
 net/socket.c           | 25 ++++++++++++++++---------
 2 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/include/linux/socket.h b/include/linux/socket.h
index 89d16b90370b..b3000f49e9f5 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -442,6 +442,8 @@ extern int __sys_accept4(int fd, struct sockaddr __user *upeer_sockaddr,
 extern int __sys_socket(int family, int type, int protocol);
 extern struct file *__sys_socket_file(int family, int type, int protocol);
 extern int __sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen);
+extern int __sys_bind_socket(struct socket *sock, struct sockaddr_storage *address,
+			     int addrlen);
 extern int __sys_connect_file(struct file *file, struct sockaddr_storage *addr,
 			      int addrlen, int file_flags);
 extern int __sys_connect(int fd, struct sockaddr __user *uservaddr,
diff --git a/net/socket.c b/net/socket.c
index e416920e9399..fd0714e10ced 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -1822,6 +1822,20 @@ SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol,
 	return __sys_socketpair(family, type, protocol, usockvec);
 }
 
+int __sys_bind_socket(struct socket *sock, struct sockaddr_storage *address,
+		      int addrlen)
+{
+	int err;
+
+	err = security_socket_bind(sock, (struct sockaddr *)address,
+				   addrlen);
+	if (!err)
+		err = READ_ONCE(sock->ops)->bind(sock,
+						 (struct sockaddr *)address,
+						 addrlen);
+	return err;
+}
+
 /*
  *	Bind a name to a socket. Nothing much to do here since it's
  *	the protocol's responsibility to handle the local address.
@@ -1839,15 +1853,8 @@ int __sys_bind(int fd, struct sockaddr __user *umyaddr, int addrlen)
 	sock = sockfd_lookup_light(fd, &err, &fput_needed);
 	if (sock) {
 		err = move_addr_to_kernel(umyaddr, addrlen, &address);
-		if (!err) {
-			err = security_socket_bind(sock,
-						   (struct sockaddr *)&address,
-						   addrlen);
-			if (!err)
-				err = READ_ONCE(sock->ops)->bind(sock,
-						      (struct sockaddr *)
-						      &address, addrlen);
-		}
+		if (!err)
+			err = __sys_bind_socket(sock, &address, addrlen);
 		fput_light(sock->file, fput_needed);
 	}
 	return err;
-- 
2.45.2


^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2024-07-22 12:38 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-14 16:30 [PATCH v2 1/4] net: Split a __sys_bind helper for io_uring Gabriel Krisman Bertazi
2024-06-14 16:30 ` [PATCH v2 2/4] net: Split a __sys_listen " Gabriel Krisman Bertazi
2024-06-14 22:44   ` Kuniyuki Iwashima
2024-06-19  0:50   ` Jakub Kicinski
2024-06-14 16:30 ` [PATCH v2 3/4] io_uring: Introduce IORING_OP_BIND Gabriel Krisman Bertazi
2024-06-14 22:46   ` Kuniyuki Iwashima
2024-06-15  0:27     ` Jens Axboe
2024-06-14 16:30 ` [PATCH v2 4/4] io_uring: Introduce IORING_OP_LISTEN Gabriel Krisman Bertazi
2024-06-14 22:42 ` [PATCH v2 1/4] net: Split a __sys_bind helper for io_uring Kuniyuki Iwashima
2024-06-19  0:49 ` Jakub Kicinski
2024-06-19 13:40   ` Jens Axboe
2024-06-19 15:04     ` Jakub Kicinski
2024-06-19 15:06       ` Jens Axboe
2024-07-15 12:49         ` Matus Jokay
2024-07-15 13:59           ` Tetsuo Handa
2024-07-22 12:37             ` Matus Jokay
2024-06-19 14:58 ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox