Skip to content

Commit 5da92a2

Browse files
namjaejeonsmfrench
authored andcommitted
ksmbd: make ksmbd thread names distinct by client IP
This patch makes ksmbd thread names distinct by client IP address. 100943 ? S 0:00 [ksmbd:::ffff:10.177.110.57] or 101752 ? S 0:00 [ksmbd:10.177.110.57] Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent 305853c commit 5da92a2

1 file changed

Lines changed: 13 additions & 26 deletions

File tree

fs/smb/server/transport_tcp.c

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -170,17 +170,6 @@ static struct kvec *get_conn_iovec(struct tcp_transport *t, unsigned int nr_segs
170170
return new_iov;
171171
}
172172

173-
static unsigned short ksmbd_tcp_get_port(const struct sockaddr *sa)
174-
{
175-
switch (sa->sa_family) {
176-
case AF_INET:
177-
return ntohs(((struct sockaddr_in *)sa)->sin_port);
178-
case AF_INET6:
179-
return ntohs(((struct sockaddr_in6 *)sa)->sin6_port);
180-
}
181-
return 0;
182-
}
183-
184173
/**
185174
* ksmbd_tcp_new_connection() - create a new tcp session on mount
186175
* @client_sk: socket associated with new connection
@@ -192,7 +181,6 @@ static unsigned short ksmbd_tcp_get_port(const struct sockaddr *sa)
192181
*/
193182
static int ksmbd_tcp_new_connection(struct socket *client_sk)
194183
{
195-
struct sockaddr *csin;
196184
int rc = 0;
197185
struct tcp_transport *t;
198186
struct task_struct *handler;
@@ -203,27 +191,26 @@ static int ksmbd_tcp_new_connection(struct socket *client_sk)
203191
return -ENOMEM;
204192
}
205193

206-
csin = KSMBD_TCP_PEER_SOCKADDR(KSMBD_TRANS(t)->conn);
207-
if (kernel_getpeername(client_sk, csin) < 0) {
208-
pr_err("client ip resolution failed\n");
209-
rc = -EINVAL;
210-
goto out_error;
211-
}
212-
194+
#if IS_ENABLED(CONFIG_IPV6)
195+
if (client_sk->sk->sk_family == AF_INET6)
196+
handler = kthread_run(ksmbd_conn_handler_loop,
197+
KSMBD_TRANS(t)->conn, "ksmbd:%pI6c",
198+
&KSMBD_TRANS(t)->conn->inet6_addr);
199+
else
200+
handler = kthread_run(ksmbd_conn_handler_loop,
201+
KSMBD_TRANS(t)->conn, "ksmbd:%pI4",
202+
&KSMBD_TRANS(t)->conn->inet_addr);
203+
#else
213204
handler = kthread_run(ksmbd_conn_handler_loop,
214-
KSMBD_TRANS(t)->conn,
215-
"ksmbd:%u",
216-
ksmbd_tcp_get_port(csin));
205+
KSMBD_TRANS(t)->conn, "ksmbd:%pI4",
206+
&KSMBD_TRANS(t)->conn->inet_addr);
207+
#endif
217208
if (IS_ERR(handler)) {
218209
pr_err("cannot start conn thread\n");
219210
rc = PTR_ERR(handler);
220211
free_transport(t);
221212
}
222213
return rc;
223-
224-
out_error:
225-
free_transport(t);
226-
return rc;
227214
}
228215

229216
/**

0 commit comments

Comments
 (0)