Patch "afs: Fix lost servers_outstanding count" has been added to the 5.10-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

    afs: Fix lost servers_outstanding count

to the 5.10-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:
     afs-fix-lost-servers_outstanding-count.patch
and it can be found in the queue-5.10 subdirectory.

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



commit a9ed555742e4459b1f6d5c95cbc82964885ef749
Author: David Howells <dhowells@xxxxxxxxxx>
Date:   Wed Dec 21 14:30:48 2022 +0000

    afs: Fix lost servers_outstanding count
    
    [ Upstream commit 36f82c93ee0bd88f1c95a52537906b8178b537f1 ]
    
    The afs_fs_probe_dispatcher() work function is passed a count on
    net->servers_outstanding when it is scheduled (which may come via its
    timer).  This is passed back to the work_item, passed to the timer or
    dropped at the end of the dispatcher function.
    
    But, at the top of the dispatcher function, there are two checks which
    skip the rest of the function: if the network namespace is being destroyed
    or if there are no fileservers to probe.  These two return paths, however,
    do not drop the count passed to the dispatcher, and so, sometimes, the
    destruction of a network namespace, such as induced by rmmod of the kafs
    module, may get stuck in afs_purge_servers(), waiting for
    net->servers_outstanding to become zero.
    
    Fix this by adding the missing decrements in afs_fs_probe_dispatcher().
    
    Fixes: f6cbb368bcb0 ("afs: Actively poll fileservers to maintain NAT or firewall openings")
    Reported-by: Marc Dionne <marc.dionne@xxxxxxxxxxxx>
    Signed-off-by: David Howells <dhowells@xxxxxxxxxx>
    Tested-by: Marc Dionne <marc.dionne@xxxxxxxxxxxx>
    cc: linux-afs@xxxxxxxxxxxxxxxxxxx
    Link: https://lore.kernel.org/r/167164544917.2072364.3759519569649459359.stgit@xxxxxxxxxxxxxxxxxxxxxx/
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/afs/fs_probe.c b/fs/afs/fs_probe.c
index 04d42e49fc59..def80365fe79 100644
--- a/fs/afs/fs_probe.c
+++ b/fs/afs/fs_probe.c
@@ -360,12 +360,15 @@ void afs_fs_probe_dispatcher(struct work_struct *work)
 	unsigned long nowj, timer_at, poll_at;
 	bool first_pass = true, set_timer = false;
 
-	if (!net->live)
+	if (!net->live) {
+		afs_dec_servers_outstanding(net);
 		return;
+	}
 
 	_enter("");
 
 	if (list_empty(&net->fs_probe_fast) && list_empty(&net->fs_probe_slow)) {
+		afs_dec_servers_outstanding(net);
 		_leave(" [none]");
 		return;
 	}



[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