]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
smb: client: make use of smbdirect_socket.disconnect_work
authorStefan Metzmacher <metze@samba.org>
Fri, 8 Aug 2025 17:06:49 +0000 (19:06 +0200)
committerSteve French <stfrench@microsoft.com>
Sun, 28 Sep 2025 23:29:48 +0000 (18:29 -0500)
Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/smbdirect.c
fs/smb/client/smbdirect.h

index fcef8f879bb3649a85dc40ac1cfa07218392c382..89375f3bd30a08526e489c9612322ce984173ff9 100644 (file)
@@ -157,9 +157,8 @@ do {                                                                        \
 
 static void smbd_disconnect_rdma_work(struct work_struct *work)
 {
-       struct smbd_connection *info =
-               container_of(work, struct smbd_connection, disconnect_work);
-       struct smbdirect_socket *sc = &info->socket;
+       struct smbdirect_socket *sc =
+               container_of(work, struct smbdirect_socket, disconnect_work);
 
        switch (sc->status) {
        case SMBDIRECT_SOCKET_NEGOTIATE_NEEDED:
@@ -197,7 +196,9 @@ static void smbd_disconnect_rdma_work(struct work_struct *work)
 
 static void smbd_disconnect_rdma_connection(struct smbd_connection *info)
 {
-       queue_work(info->workqueue, &info->disconnect_work);
+       struct smbdirect_socket *sc = &info->socket;
+
+       queue_work(info->workqueue, &sc->disconnect_work);
 }
 
 /* Upcall from RDMA CM */
@@ -1705,6 +1706,8 @@ static struct smbd_connection *_smbd_get_connection(
        info->initiator_depth = 1;
        info->responder_resources = SMBD_CM_RESPONDER_RESOURCES;
 
+       INIT_WORK(&sc->disconnect_work, smbd_disconnect_rdma_work);
+
        rc = smbd_ia_open(info, dstaddr, port);
        if (rc) {
                log_rdma_event(INFO, "smbd_ia_open rc=%d\n", rc);
@@ -1850,7 +1853,6 @@ static struct smbd_connection *_smbd_get_connection(
 
        init_waitqueue_head(&info->wait_post_send);
 
-       INIT_WORK(&info->disconnect_work, smbd_disconnect_rdma_work);
        INIT_WORK(&info->post_send_credits_work, smbd_post_send_credits);
        info->new_credits_offered = 0;
        spin_lock_init(&info->lock_new_credits_offered);
index f250241d2d24bbd0c6d513cb5d51fce68f431639..1c63188664df95c3a80f6513ae163dd6434f2b42 100644 (file)
@@ -45,7 +45,6 @@ enum keep_alive_status {
 struct smbd_connection {
        struct smbdirect_socket socket;
 
-       struct work_struct disconnect_work;
        struct work_struct post_send_credits_work;
 
        spinlock_t lock_new_credits_offered;