60d919fa78113f2924223d61e06a775ab84f8f6b
[openwrt/staging/blocktrron.git] /
1 From 7220ecc26a9a8e6766eb9ec7cd90fbba048ce7b3 Mon Sep 17 00:00:00 2001
2 From: Andrea Pesaresi <andreapesaresi82@gmail.com>
3 Date: Tue, 30 Sep 2025 19:35:36 +0200
4 Subject: Revert "ksmbd: extend the connection limiting mechanism to support
5 IPv6"
6
7 This reverts commit d9e157fcfebc126cd19b2333a6417a840c24e529.
8 ---
9 fs/smb/server/connection.h | 7 +------
10 fs/smb/server/transport_tcp.c | 26 +++-----------------------
11 2 files changed, 4 insertions(+), 29 deletions(-)
12
13 --- a/fs/smb/server/connection.h
14 +++ b/fs/smb/server/connection.h
15 @@ -46,12 +46,7 @@ struct ksmbd_conn {
16 struct mutex srv_mutex;
17 int status;
18 unsigned int cli_cap;
19 - union {
20 - __be32 inet_addr;
21 -#if IS_ENABLED(CONFIG_IPV6)
22 - u8 inet6_addr[16];
23 -#endif
24 - };
25 + __be32 inet_addr;
26 char *request_buf;
27 struct ksmbd_transport *transport;
28 struct nls_table *local_nls;
29 --- a/fs/smb/server/transport_tcp.c
30 +++ b/fs/smb/server/transport_tcp.c
31 @@ -87,14 +87,7 @@ static struct tcp_transport *alloc_trans
32 return NULL;
33 }
34
35 -#if IS_ENABLED(CONFIG_IPV6)
36 - if (client_sk->sk->sk_family == AF_INET6)
37 - memcpy(&conn->inet6_addr, &client_sk->sk->sk_v6_daddr, 16);
38 - else
39 - conn->inet_addr = inet_sk(client_sk->sk)->inet_daddr;
40 -#else
41 conn->inet_addr = inet_sk(client_sk->sk)->inet_daddr;
42 -#endif
43 conn->transport = KSMBD_TRANS(t);
44 KSMBD_TRANS(t)->conn = conn;
45 KSMBD_TRANS(t)->ops = &ksmbd_tcp_transport_ops;
46 @@ -238,6 +231,7 @@ static int ksmbd_kthread_fn(void *p)
47 {
48 struct socket *client_sk = NULL;
49 struct interface *iface = (struct interface *)p;
50 + struct inet_sock *csk_inet;
51 struct ksmbd_conn *conn;
52 int ret;
53
54 @@ -260,27 +254,13 @@ static int ksmbd_kthread_fn(void *p)
55 /*
56 * Limits repeated connections from clients with the same IP.
57 */
58 + csk_inet = inet_sk(client_sk->sk);
59 down_read(&conn_list_lock);
60 list_for_each_entry(conn, &conn_list, conns_list)
61 -#if IS_ENABLED(CONFIG_IPV6)
62 - if (client_sk->sk->sk_family == AF_INET6) {
63 - if (memcmp(&client_sk->sk->sk_v6_daddr,
64 - &conn->inet6_addr, 16) == 0) {
65 - ret = -EAGAIN;
66 - break;
67 - }
68 - } else if (inet_sk(client_sk->sk)->inet_daddr ==
69 - conn->inet_addr) {
70 + if (csk_inet->inet_daddr == conn->inet_addr) {
71 ret = -EAGAIN;
72 break;
73 }
74 -#else
75 - if (inet_sk(client_sk->sk)->inet_daddr ==
76 - conn->inet_addr) {
77 - ret = -EAGAIN;
78 - break;
79 - }
80 -#endif
81 up_read(&conn_list_lock);
82 if (ret == -EAGAIN)
83 continue;