File tree Expand file tree Collapse file tree 4 files changed +12
-4
lines changed Expand file tree Collapse file tree 4 files changed +12
-4
lines changed Original file line number Diff line number Diff line change @@ -40,7 +40,7 @@ void ksmbd_conn_free(struct ksmbd_conn *conn)
40
40
kvfree (conn -> request_buf );
41
41
kfree (conn -> preauth_info );
42
42
if (atomic_dec_and_test (& conn -> refcnt )) {
43
- ksmbd_free_transport (conn -> transport );
43
+ conn -> transport -> ops -> free_transport (conn -> transport );
44
44
kfree (conn );
45
45
}
46
46
}
Original file line number Diff line number Diff line change @@ -133,6 +133,7 @@ struct ksmbd_transport_ops {
133
133
void * buf , unsigned int len ,
134
134
struct smb2_buffer_desc_v1 * desc ,
135
135
unsigned int desc_len );
136
+ void (* free_transport )(struct ksmbd_transport * kt );
136
137
};
137
138
138
139
struct ksmbd_transport {
Original file line number Diff line number Diff line change @@ -159,7 +159,8 @@ struct smb_direct_transport {
159
159
};
160
160
161
161
#define KSMBD_TRANS (t ) ((struct ksmbd_transport *)&((t)->transport))
162
-
162
+ #define SMBD_TRANS (t ) ((struct smb_direct_transport *)container_of(t, \
163
+ struct smb_direct_transport, transport))
163
164
enum {
164
165
SMB_DIRECT_MSG_NEGOTIATE_REQ = 0 ,
165
166
SMB_DIRECT_MSG_DATA_TRANSFER
@@ -410,6 +411,11 @@ static struct smb_direct_transport *alloc_transport(struct rdma_cm_id *cm_id)
410
411
return NULL ;
411
412
}
412
413
414
+ static void smb_direct_free_transport (struct ksmbd_transport * kt )
415
+ {
416
+ kfree (SMBD_TRANS (kt ));
417
+ }
418
+
413
419
static void free_transport (struct smb_direct_transport * t )
414
420
{
415
421
struct smb_direct_recvmsg * recvmsg ;
@@ -455,7 +461,6 @@ static void free_transport(struct smb_direct_transport *t)
455
461
456
462
smb_direct_destroy_pools (t );
457
463
ksmbd_conn_free (KSMBD_TRANS (t )-> conn );
458
- kfree (t );
459
464
}
460
465
461
466
static struct smb_direct_sendmsg
@@ -2281,4 +2286,5 @@ static const struct ksmbd_transport_ops ksmbd_smb_direct_transport_ops = {
2281
2286
.read = smb_direct_read ,
2282
2287
.rdma_read = smb_direct_rdma_read ,
2283
2288
.rdma_write = smb_direct_rdma_write ,
2289
+ .free_transport = smb_direct_free_transport ,
2284
2290
};
Original file line number Diff line number Diff line change @@ -93,7 +93,7 @@ static struct tcp_transport *alloc_transport(struct socket *client_sk)
93
93
return t ;
94
94
}
95
95
96
- void ksmbd_free_transport (struct ksmbd_transport * kt )
96
+ static void ksmbd_tcp_free_transport (struct ksmbd_transport * kt )
97
97
{
98
98
struct tcp_transport * t = TCP_TRANS (kt );
99
99
@@ -656,4 +656,5 @@ static const struct ksmbd_transport_ops ksmbd_tcp_transport_ops = {
656
656
.read = ksmbd_tcp_read ,
657
657
.writev = ksmbd_tcp_writev ,
658
658
.disconnect = ksmbd_tcp_disconnect ,
659
+ .free_transport = ksmbd_tcp_free_transport ,
659
660
};
You can’t perform that action at this time.
0 commit comments