diff mbox

[1/5] rds: tcp: release the created connection

Message ID 1490598390-13812-2-git-send-email-yanjun.zhu@oracle.com
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Zhu Yanjun March 27, 2017, 7:06 a.m. UTC
When some error occurs, the created connection should be destroyed.

Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com>
---
 net/rds/tcp_listen.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Sowmini Varadhan March 27, 2017, 7:37 a.m. UTC | #1
On (03/27/17 03:06), Zhu Yanjun wrote:
> Date: Mon, 27 Mar 2017 03:06:26 -0400
> From: Zhu Yanjun <yanjun.zhu@oracle.com>
> To: yanjun.zhu@oracle.com, santosh.shilimkar@oracle.com,
>  netdev@vger.kernel.org, linux-rdma@vger.kernel.org,
>  rds-devel@oss.oracle.com, junxiao.bi@oracle.com, joe.jin@oracle.com
> Subject: [PATCH 1/5] rds: tcp: release the created connection
> X-Mailer: git-send-email 2.7.4
> 
> When some error occurs, the created connection should be destroyed.

No please dont do this.

This is the case when there are duelling connections. We want
to reset the new (accept sock) and leave the old socket in place.

How did you test this? Did you test it with network namespaces?

--Sowmini


>  net/rds/tcp_listen.c | 1 +
> 
> diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
> index 5076788..58aa5bc 100644
> --- a/net/rds/tcp_listen.c
> +++ b/net/rds/tcp_listen.c
> @@ -196,6 +196,7 @@ int rds_tcp_accept_one(struct socket *sock)
>  rst_nsk:
>  	/* reset the newly returned accept sock and bail */
>  	kernel_sock_shutdown(new_sock, SHUT_RDWR);
> +	rds_conn_destroy(conn);
>  	ret = 0;
>  out:
>  	if (rs_tcp)
> -- 
> 2.7.4
>
Zhu Yanjun March 27, 2017, 8:05 a.m. UTC | #2
On 2017/3/27 15:37, Sowmini Varadhan wrote:
> On (03/27/17 03:06), Zhu Yanjun wrote:
>> Date: Mon, 27 Mar 2017 03:06:26 -0400
>> From: Zhu Yanjun <yanjun.zhu@oracle.com>
>> To: yanjun.zhu@oracle.com, santosh.shilimkar@oracle.com,
>>   netdev@vger.kernel.org, linux-rdma@vger.kernel.org,
>>   rds-devel@oss.oracle.com, junxiao.bi@oracle.com, joe.jin@oracle.com
>> Subject: [PATCH 1/5] rds: tcp: release the created connection
>> X-Mailer: git-send-email 2.7.4
>>
>> When some error occurs, the created connection should be destroyed.
> No please dont do this.
>
> This is the case when there are duelling connections. We want
> to reset the new (accept sock) and leave the old socket in place.
>
> How did you test this? Did you test it with network namespaces?
Sorry. I just made simple test. It seems that it worked well. Would you 
like to show me some test about this patch?

Thanks a lot.
Zhu Yanjun
>
> --Sowmini
>
>
>>   net/rds/tcp_listen.c | 1 +
>>
>> diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
>> index 5076788..58aa5bc 100644
>> --- a/net/rds/tcp_listen.c
>> +++ b/net/rds/tcp_listen.c
>> @@ -196,6 +196,7 @@ int rds_tcp_accept_one(struct socket *sock)
>>   rst_nsk:
>>   	/* reset the newly returned accept sock and bail */
>>   	kernel_sock_shutdown(new_sock, SHUT_RDWR);
>> +	rds_conn_destroy(conn);
>>   	ret = 0;
>>   out:
>>   	if (rs_tcp)
>> -- 
>> 2.7.4
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sowmini Varadhan March 27, 2017, 9:17 a.m. UTC | #3
On (03/27/17 16:05), Yanjun Zhu wrote:
> Sorry. I just made simple test. It seems that it worked well. Would you like
> to show me some test about this patch?
> 

Your patch is a non-trivial bug. Dont do this.

Please read the comments above the "goto rst_nsk" in that function.
Also note the comments above rds_conn_destroy.

Thanks
--Sowmini
diff mbox

Patch

diff --git a/net/rds/tcp_listen.c b/net/rds/tcp_listen.c
index 5076788..58aa5bc 100644
--- a/net/rds/tcp_listen.c
+++ b/net/rds/tcp_listen.c
@@ -196,6 +196,7 @@  int rds_tcp_accept_one(struct socket *sock)
 rst_nsk:
 	/* reset the newly returned accept sock and bail */
 	kernel_sock_shutdown(new_sock, SHUT_RDWR);
+	rds_conn_destroy(conn);
 	ret = 0;
 out:
 	if (rs_tcp)