Skip to content

Commit 77ffbca

Browse files
hac-vsmfrench
authored andcommitted
smb: server: fix leak of active_num_conn in ksmbd_tcp_new_connection()
On kthread_run() failure in ksmbd_tcp_new_connection(), the transport is freed via free_transport(), which does not decrement active_num_conn, leaking this counter. Replace free_transport() with ksmbd_tcp_disconnect(). Fixes: 0d0d468 ("ksmbd: add max connections parameter") Cc: stable@vger.kernel.org Signed-off-by: Henrique Carvalho <henrique.carvalho@suse.com> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent b38f99c commit 77ffbca

1 file changed

Lines changed: 2 additions & 1 deletion

File tree

fs/smb/server/transport_tcp.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ static const struct ksmbd_transport_ops ksmbd_tcp_transport_ops;
4040

4141
static void tcp_stop_kthread(struct task_struct *kthread);
4242
static struct interface *alloc_iface(char *ifname);
43+
static void ksmbd_tcp_disconnect(struct ksmbd_transport *t);
4344

4445
#define KSMBD_TRANS(t) (&(t)->transport)
4546
#define TCP_TRANS(t) ((struct tcp_transport *)container_of(t, \
@@ -202,7 +203,7 @@ static int ksmbd_tcp_new_connection(struct socket *client_sk)
202203
if (IS_ERR(handler)) {
203204
pr_err("cannot start conn thread\n");
204205
rc = PTR_ERR(handler);
205-
free_transport(t);
206+
ksmbd_tcp_disconnect(KSMBD_TRANS(t));
206207
}
207208
return rc;
208209
}

0 commit comments

Comments
 (0)