There should no difference between setting the CF_IO_STOP flag
before restore_callbacks() to do it before or afterwards. The
restore_callbacks() will be sure that no callback is executed anymore
when the bit wasn't set.

Signed-off-by: Alexander Aring <aahri...@redhat.com>
---
 fs/dlm/lowcomms.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c
index b28505b8b23b..5a7586633cbe 100644
--- a/fs/dlm/lowcomms.c
+++ b/fs/dlm/lowcomms.c
@@ -735,19 +735,15 @@ static void stop_connection_io(struct connection *con)
        if (con->othercon)
                stop_connection_io(con->othercon);
 
+       spin_lock_bh(&con->writequeue_lock);
+       set_bit(CF_IO_STOP, &con->flags);
+       spin_unlock_bh(&con->writequeue_lock);
+
        down_write(&con->sock_lock);
        if (con->sock) {
                lock_sock(con->sock->sk);
                restore_callbacks(con->sock->sk);
-
-               spin_lock_bh(&con->writequeue_lock);
-               set_bit(CF_IO_STOP, &con->flags);
-               spin_unlock_bh(&con->writequeue_lock);
                release_sock(con->sock->sk);
-       } else {
-               spin_lock_bh(&con->writequeue_lock);
-               set_bit(CF_IO_STOP, &con->flags);
-               spin_unlock_bh(&con->writequeue_lock);
        }
        up_write(&con->sock_lock);
 
-- 
2.31.1

Reply via email to