]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
afs: Fix off-by-one in afs_rename() expected data version calculation
authorDavid Howells <dhowells@redhat.com>
Tue, 30 Jul 2019 13:38:51 +0000 (14:38 +0100)
committerDavid Howells <dhowells@redhat.com>
Tue, 30 Jul 2019 13:38:51 +0000 (14:38 +0100)
When afs_rename() calculates the expected data version of the target
directory in a cross-directory rename, it doesn't increment it as it
should, so it always thinks that the target inode is unexpectedly modified
on the server.

Fixes: a58823ac4589 ("afs: Fix application of status and callback to be under same lock")
Signed-off-by: David Howells <dhowells@redhat.com>
fs/afs/dir.c

index e640d67274be2b06e64a83dd967670d72a1cbed4..20aa18b38a493da24b8b8b097d03c0b4c9d3bde7 100644 (file)
@@ -1804,7 +1804,7 @@ static int afs_rename(struct inode *old_dir, struct dentry *old_dentry,
                                afs_end_vnode_operation(&fc);
                                goto error_rehash;
                        }
-                       new_data_version = new_dvnode->status.data_version;
+                       new_data_version = new_dvnode->status.data_version + 1;
                } else {
                        new_data_version = orig_data_version;
                        new_scb = &scb[0];