]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
afs: Fix misplaced inc of net->cells_outstanding
authorDavid Howells <dhowells@redhat.com>
Mon, 22 Jun 2026 09:08:45 +0000 (10:08 +0100)
committerChristian Brauner <brauner@kernel.org>
Wed, 1 Jul 2026 13:26:20 +0000 (15:26 +0200)
Fix net->cells_outstanding being incremented before the check for failure
of idr_alloc_cyclic(), leaving the count incremented on error.

Fixes: 88c853c3f5c0 ("afs: Fix cell refcounting by splitting the usage counter")
Reported-by: Hillf Danton <hdanton@sina.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Link: https://patch.msgid.link/20260622090856.2746629-12-dhowells@redhat.com
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
fs/afs/cell.c

index 9738684dbdd268bea4742dd2ad42c86bcacf0dac..e0fab1609f2787cf7e71f6741a9cb724d42e004e 100644 (file)
@@ -205,11 +205,11 @@ static struct afs_cell *afs_alloc_cell(struct afs_net *net,
        cell->dns_source = vllist->source;
        cell->dns_status = vllist->status;
        smp_store_release(&cell->dns_lookup_count, 1); /* vs source/status */
-       atomic_inc(&net->cells_outstanding);
        ret = idr_alloc_cyclic(&net->cells_dyn_ino, cell,
                               2, INT_MAX / 2, GFP_KERNEL);
        if (ret < 0)
                goto error;
+       atomic_inc(&net->cells_outstanding);
        cell->dynroot_ino = ret;
        cell->debug_id = atomic_inc_return(&cell_debug_id);