mirror of
https://github.com/torvalds/linux.git
synced 2025-08-15 14:11:42 +02:00
don't open-code kernel_accept() in rds_tcp_accept_one()
rds_tcp_accept_one() starts with a pretty much verbatim copy of kernel_accept(). Might as well use the real thing... That code went into mainline in 2009, kernel_accept() had been added in Aug 2006, the copyright on rds/tcp_listen.c is "Copyright (c) 2006 Oracle", so it's entirely possible that it predates the introduction of kernel_accept(). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Link: https://patch.msgid.link/20250713180134.GC1880847@ZenIV Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
c34632dbb2
commit
5cc7fce349
1 changed files with 2 additions and 22 deletions
|
@ -105,10 +105,6 @@ int rds_tcp_accept_one(struct socket *sock)
|
|||
int conn_state;
|
||||
struct rds_conn_path *cp;
|
||||
struct in6_addr *my_addr, *peer_addr;
|
||||
struct proto_accept_arg arg = {
|
||||
.flags = O_NONBLOCK,
|
||||
.kern = true,
|
||||
};
|
||||
#if !IS_ENABLED(CONFIG_IPV6)
|
||||
struct in6_addr saddr, daddr;
|
||||
#endif
|
||||
|
@ -117,25 +113,9 @@ int rds_tcp_accept_one(struct socket *sock)
|
|||
if (!sock) /* module unload or netns delete in progress */
|
||||
return -ENETUNREACH;
|
||||
|
||||
ret = sock_create_lite(sock->sk->sk_family,
|
||||
sock->sk->sk_type, sock->sk->sk_protocol,
|
||||
&new_sock);
|
||||
ret = kernel_accept(sock, &new_sock, O_NONBLOCK);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
ret = sock->ops->accept(sock, new_sock, &arg);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
/* sock_create_lite() does not get a hold on the owner module so we
|
||||
* need to do it here. Note that sock_release() uses sock->ops to
|
||||
* determine if it needs to decrement the reference count. So set
|
||||
* sock->ops after calling accept() in case that fails. And there's
|
||||
* no need to do try_module_get() as the listener should have a hold
|
||||
* already.
|
||||
*/
|
||||
new_sock->ops = sock->ops;
|
||||
__module_get(new_sock->ops->owner);
|
||||
return ret;
|
||||
|
||||
rds_tcp_keepalive(new_sock);
|
||||
if (!rds_tcp_tune(new_sock)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue