Patch "fs: dlm: fix race setting stop tx flag" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    fs: dlm: fix race setting stop tx flag

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     fs-dlm-fix-race-setting-stop-tx-flag.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 70e7ce139b9d14a1c60a8e80afe184889f3051df
Author: Alexander Aring <aahringo@xxxxxxxxxx>
Date:   Thu Jan 12 17:10:34 2023 -0500

    fs: dlm: fix race setting stop tx flag
    
    [ Upstream commit 164272113b685927126c938b4a9cbd2075eb15ee ]
    
    This patch sets the stop tx flag before we commit the dlm message.
    This flag will report about unexpected transmissions after we
    send the DLM_FIN message out, which should be the last message sent.
    When we commit the dlm fin message, it could be that we already
    got an ack back and the CLOSED state change already happened.
    We should not set this flag when we are in CLOSED state. To avoid this
    race we simply set the tx flag before the state change can be in
    progress by moving it before dlm_midcomms_commit_mhandle().
    
    Cc: stable@xxxxxxxxxxxxxxx
    Fixes: 489d8e559c65 ("fs: dlm: add reliable connection if reconnect")
    Signed-off-by: Alexander Aring <aahringo@xxxxxxxxxx>
    Signed-off-by: David Teigland <teigland@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/dlm/midcomms.c b/fs/dlm/midcomms.c
index d976c2009b185..b2a25a33a1488 100644
--- a/fs/dlm/midcomms.c
+++ b/fs/dlm/midcomms.c
@@ -406,6 +406,7 @@ static int dlm_send_fin(struct midcomms_node *node,
 	if (!mh)
 		return -ENOMEM;
 
+	set_bit(DLM_NODE_FLAG_STOP_TX, &node->flags);
 	mh->ack_rcv = ack_rcv;
 
 	m_header = (struct dlm_header *)ppc;
@@ -417,7 +418,6 @@ static int dlm_send_fin(struct midcomms_node *node,
 
 	pr_debug("sending fin msg to node %d\n", node->nodeid);
 	dlm_midcomms_commit_mhandle(mh, NULL, 0);
-	set_bit(DLM_NODE_FLAG_STOP_TX, &node->flags);
 
 	return 0;
 }



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux