]> 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:49:49 +0000 (12:49 +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 cec18f9f8bd7ac981e90fcc0ec24953be4014af3..d4bd6efc8c447cb829b37d6885ba1d237402ab04 100644 (file)
@@ -1493,7 +1493,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);