]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
afs: Fix EEXIST error returned from afs_rmdir() to be ENOTEMPTY
authorDavid Howells <dhowells@redhat.com>
Mon, 16 Dec 2024 20:41:02 +0000 (20:41 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Mar 2025 11:46:44 +0000 (12:46 +0100)
[ Upstream commit b49194da2aff2c879dec9c59ef8dec0f2b0809ef ]

AFS servers pass back a code indicating EEXIST when they're asked to remove
a directory that is not empty rather than ENOTEMPTY because not all the
systems that an AFS server can run on have the latter error available and
AFS preexisted the addition of that error in general.

Fix afs_rmdir() to translate EEXIST to ENOTEMPTY.

Fixes: 260a980317da ("[AFS]: Add "directory write" support.")
Signed-off-by: David Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/r/20241216204124.3752367-13-dhowells@redhat.com
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/afs/dir.c

index a59d6293a32b2f141073d65222c64a6cf5fadb45..c3c870416f1b7b2692249bfdf275acbd40b205fa 100644 (file)
@@ -1412,7 +1412,12 @@ static int afs_rmdir(struct inode *dir, struct dentry *dentry)
                op->file[1].vnode = vnode;
        }
 
-       return afs_do_sync_operation(op);
+       ret = afs_do_sync_operation(op);
+
+       /* Not all systems that can host afs servers have ENOTEMPTY. */
+       if (ret == -EEXIST)
+               ret = -ENOTEMPTY;
+       return ret;
 
 error:
        return afs_put_operation(op);